Postgresql
分組並顯示每個結果的最後一行的內容
我有兩個對象的一些數據,我想檢索兩個對象的最後一行,最好是在一個查詢中。
表結構:
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 ;