我正在從數據庫中選擇句點列表。如果當前行是第一行則週期與日期開始,我能找到之間的間歇期開始是這樣的:查找當前行是否是從數據庫中選擇的最後一行
SELECT
...
CASE WHEN row_number() OVER(ORDER BY r.created_at ASC) = 1 THEN r.created_at - r.created_at::date ELSE NULL END AS period
...
FROM mytable r
我怎樣才能做同樣的最後行?查找最後一行的r.created_at和其日期的午夜之間的時間。
我知道first
和last
函數PostgreSQL(https://wiki.postgresql.org/wiki/First/last_(aggregate)),但它們是聚合函數,並沒有幫助在這種情況下。
編輯: 這個問題有2個很好的答案。他們都沒有幫助我,因爲我作爲我的問題的一部分提出的這條單線是更大的查詢的一部分,以編程方式放在一起,並且使用提供的解決方案將迫使我改變很多代碼,這是我不願意做的這點。如果縮放問題發生 - 那麼我肯定會重新考慮。
如何使用'DESC'而不是'ASC'來執行相同的操作? –
如果您通過(... DESC)排序,最後一行將是第一行... – joop
嗯,這可能實際上工作。謝謝。我現在必須測試它:) –