Postgresql

分組並顯示每個結果的最後一行的內容

  • May 14, 2014

我有兩個對象的一些數據,我想檢索兩個對象的最後一行,最好是在一個查詢中。

表結構:

CREATE TABLE data
(
 pid serial NOT NULL,
 dt timestamp without time zone,
 object_id integer,
 info_1 numeric(10,8),
 speed numeric,
 CONSTRAINT dat_pid PRIMARY KEY (pid)
)

樣本數據:

1, 2014-04-29 12:02:56, 8, ....
2, 2014-04-29 12:02:10, 8, ....
3, 2014-04-29 12:01:02, 8, ....
5, 2014-04-29 12:01:32, 6, ....
.....

我想要每個唯一對象 ID 一行,每一行都是可用的最新行。我試圖通過使用這個查詢來實現它,但它希望 pid 在 group by 子句中。但我不想按 PID 分組,而是在跟踪器 id 上……

SELECT * 
FROM data
GROUP BY object_id

您可以**DISTINCT ON**用於此類查詢:

SELECT DISTINCT ON (object_id) *
FROM data
ORDER BY object_id, dt DESC ;

引用自:https://dba.stackexchange.com/questions/64234