

由于我们既要查询university也要对学校gpa进行排序,所以不能用group by,考虑开窗函数:
1、row_number() over() :严格排序,无重复(大概就有倒霉的同样分数在别人下面)


2、rank() over() :相同值并列,后面跳号(最大限度保持公正)


3、dense_rank() over():相同值并列,不跳号(有人会高兴了)


思路:
①使用开窗函数对每个学校进行分开排序,命名为rk
②使用子查询,独独获取每个rk中的最低位
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)t1
where t1.rk=1

被折叠的 条评论
为什么被折叠?



