题解 | #找出每个学校GPA最低的同学#
找出每个学校GPA最低的同学
https://www.nowcoder.com/practice/90778f5ab7d64d35a40dc1095ff79065
SELECT a.device_id, a.university, a.gpa FROM user_profile a, ( SELECT device_id, university, ROW_NUMBER() OVER(PARTITION BY university ORDER BY gpa) rak, gpa FROM user_profile ) b WHERE a.device_id = b.device_id AND b.rak = 1 ORDER BY a.university
易错点:在第一行的选择上没有指定字段的来源表,一直报错
原先是思路是直接用groupby,但是一直报错,因为我只对gpa进行取最小。
本代码是思路是:任务是找到id(想到整条记录),并且是每个学校的(想到分组),gpa最低(想到排序)
1.使用开窗函数,进行唯一的排序,根据学校,这样就能得到每个学校的gpa最低的,排序为1,
2.进行自连接,并且选中排序为1的,因为每个学校只有一个,所以经过排序后得到结果