SELECT device_id, university, gpa FROM ( SELECT device_id, university, gpa, row_number() over(partition by university order by gpa) as rk FROM user_profile ) t WHERE t.rk = 1
重点在于子查询中的最后一行,其中row_number() over(partition by university order by gpa) as rk
表示的意思是将数据按照 university 分组,组内按照 gpa 升序排列,返回值是对应行在组内的排名。
这样,rk = 1 的数据表示的就是某个大学中 gpa 最小的数据。