2
假設您有一個包含studentID,class,grade的表格。我想要每個班的最高成績。這很容易,只是按班級分組,並獲得最高(等級)。但是我遇到的問題是如何獲得studentID。Postgresql從最大元組中獲取其他信息
假設您有一個包含studentID,class,grade的表格。我想要每個班的最高成績。這很容易,只是按班級分組,並獲得最高(等級)。但是我遇到的問題是如何獲得studentID。Postgresql從最大元組中獲取其他信息
而不是使用集合函數,你可以使用窗口功能:
SELECT class, grade, studentId
FROM (SELECT class, grade, studentId,
RANK() OVER (PARTITION BY class ORDER BY grade DESC) rk
FROM students)
WHERE rk = 1
我覺得distinct on
是一個很好的路要走:但是你可能想所有學生
select distinct on (s.class) s.*
from students
order by s.class, s.grade desc;
每班有最高成績。如果是這樣,Mureinik的解決方案更好。
看看這個:http://stackoverflow.com/questions/41049947/how-do-i-select-the-max-score-from-each-distinct-user-in-this-table – bernie