2

studentID、クラス、グレードのテーブルがあるとします。私はクラスごとに最高の成績を望みます。これは簡単です。クラスごとにグループ分けし、最大(グレード)を取得してください。しかし、私が抱えている問題は、studentIDも取得する方法です。PostgreSQLが最大タプルから他の情報を取得する

+0

これを確認してください:http://stackoverflow.com/questions/41049947/how-do-i-select-the-max-score-from-each-distinct-user-in-this-table – bernie

答えて

2

代わりに、集計関数を使用するには、ウィンドウ関数を使用することができます。

SELECT class, grade, studentId 
FROM (SELECT class, grade, studentId, 
       RANK() OVER (PARTITION BY class ORDER BY grade DESC) rk 
     FROM students) 
WHERE rk = 1 
1

私はdistinct onが行くには良い方法だと思います:

select distinct on (s.class) s.* 
from students 
order by s.class, s.grade desc; 

あなたは、おそらくのためにすべての学生をしたいしかし、各クラスは最大の等級を持つ。もしそうなら、Mureinikの方が良いでしょう。

関連する問題