我試圖在某分鐘有多個記錄時按分鐘聚合資料,但我只對最后一條記錄感興趣。例如 :
id | date | data
---- --------------------- ----------------------
1 | 2021-12-22 16:14:03 | {"x": 1, "y": 2}
2 | 2021-12-22 16:14:13 | {"x": 5, "y": 4}
3 | 2021-12-22 16:14:23 | {"x": 6, "y": 5}
4 | 2021-12-22 16:15:33 | {"x": 7, "y": 6}
5 | 2021-12-22 16:15:48 | {"x": 8, "y": 10}
我想要實作的是:
id | date | data
---- ------------------ ---------------------
3 | 2021-12-22 16:14 | {"x": 6, "y": 5}
5 | 2021-12-22 16:15 | {"x": 8, "y": 10}
我只想從某分鐘開始記錄最后一條記錄。我嘗試按“格式化”日期分組,但我不知道如何僅獲取最新行:
SELECT to_char(date, 'YYYY-MM-DD HH24:MI') as date_formatted ... FROM table GROUP BY 1
uj5u.com熱心網友回復:
您可以使用視窗函式來實作此目的:
select id,
to_char("date", 'yyyy-mm-dd hh24:mi') as date,
data
from (
select id, "date", data,
dense_rank() over (partition by date_trunc('minute', "date") order by "date" desc) as rnk
from the_table
) t
where rnk = 1
order by id;
將date_trunc()具有相同分鐘的所有行放入同一個磁區(組)中,order by "date" desc然后用于從中挑選最新的。
在線示例
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/444791.html
標籤:PostgreSQL 每组最大 n
