我需要對包含此列的表進行查詢:
name | value | date
-------- ------- -------- ---------
Jonh | 0.15 | 2021-12-23 00:00:00
Jonh | 0.14 | 2021-12-22 00:00:00
Jonh | 0.19 | 2021-12-21 00:00:00
Jonh | 0.13 | 2021-12-15 00:00:00
Bob | 0.12 | 2021-12-15 00:00:00
我需要為給定的名稱選擇過去 7 天的所有值。我只能這樣做:
SELECT value FROM mytable WHERE name='Jonh' AND (date BETWEEN '2021-12-16 00:00:00' AND '2021-12-23 00:00:00')
但這只會獲取 DB 中的值,我需要獲取 7 個專案的串列,默認值為0如果value當天沒有存盤在 DB 中,我將在后端創建一個回圈來遍歷每個專案date 并回傳 DB 上的值或默認值0,但我想知道是否可以使用 SQL 執行此操作,有什么建議嗎?
對于名稱“Jonh”并在今天進行查詢,所需的輸出是:
[0, 0, 0, 0, 0.19, 0.14, 0.15]
uj5u.com熱心網友回復:
對日期串列使用外連接:
select g.dt::date, coalesce(m.value, 0) as value
from generate_series(date '2021-12-16', date '2021-12-23', interval '1 day') as g(dt)
left join mytable m
on m.name = 'Jonh'
and m.date::date = g.dt::date
uj5u.com熱心網友回復:
你可以嘗試類似的東西
SELECT IF(value is not null, value, 0)
FROM mytable
WHERE name='Jonh'
and (date BETWEEN '2021-12-16 00:00:00' AND '2021-12-23 00:00:00');
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/391458.html
標籤:sql PostgreSQL的 选择
下一篇:Postgres:優化查詢
