2016-06-21 5 views
-1

次の表があるとします。SQLクエリを作成して、各bの最小c個の結果セットを見つけるにはどうすればよいですか?たとえば、次の表に(7,45)と(16,69)が必要です。SQLクエリを書くには?

あなたはPostgresので distinct onを使用してこれを行うことができます
a |  b | c 
-----+--------+---- 
    3 |  7 | 53 
    2 |  7 | 49 
    1 |  7 | 45 
    5 |  7 | 61 
13 |  16 | 69 
15 |  16 | 77 
    6 |  7 | 65 
    4 |  7 | 57 
14 |  16 | 73 
+1

あなたはこれまでに何をしようとしたのですか?あなたの問題は非常に基本的なものです。 –

答えて

3

だけGROUP BYを使用します。

SELECT b, MIN(c) 
FROM yourTable 
GROUP BY b 
1

select distinct on (b) b, c 
from t 
order by b, c asc; 

代替はgroup byです:

select b, min(c) 
from t 
group by b; 

あなたは両方を試してみて、より高速であるかを確認することができます。

関連する問題