2017-01-22 6 views
0

EDITで最小値を持つ二つの列に基づいて個別の行を選択:私はPostgresSQLのSQLは3列目

マイクエリを使用していますidカラムと型の列のすべての一意の行を返す必要があります。同じIDと型を持つ複数の行がある場合、time列に最小値の行が戻されます。

SELECT id, type, value FROM TableName 
GROUP BY MIN(time) 
ORDER BY id ASC, type ASC 

これは私がこれまで持っているものですが、私は間違った方法

+0

使用しているデータベースにタグを付けてください。 –

+0

一部のdbmsでは、この文が正しくありません。 dbmsにタグを付けてください。 – McNets

+0

私の悪いです。私はOPを編集した –

答えて

0

、GROUP BYを使用していますように私は、私はあなたとidとタイプの各組み合わせ内の行をマークするROW_NUMBERを使用することができると思う感じます最小時間、テーブルをフィルタリングする句使用、RN = 1を有する:

SELECT id, type, value FROM 
(SELECT id, type, value, 
ROW_NUMBER() OVER(PARTITION BY id, type ORDER BY time) AS rn 
FROM TableName) a 
WHERE rn = 1 
0

Postgresはdistinct onをサポートします。これは、通常、あなたが望むものを行う最も効率的な方法です。

SELECT DISTINCT ON (id, type) id, type, value 
FROM TableName 
ORDER BY id, type, time ; 
関連する問題