牛客网打卡:SQL33 找出每个学校GPA最低的同学
解题思路
-
组内排序,根据学校进行分组,然后每个学校分别进行排序,也就是组内排序
-
需要用到关键词 四大排序 排序的内容是 分组(partition)好以后的降序排列(desc)
-
注意: 降序排列是排列,排序是排序
代码
select t.device_id,t.university,t.gpa
from
(-- 要将新列名用引号圈起,否则会出现问题
select device_id,university,gpa,
dense_rank() over(partition by university order by gpa) as 'rank'
from user_profile
) t
where t.rank=1
分析
首先选出了第一张表,device_id,university,gpa,dense_rank() over()
其中,排序的内容是:partition by university order by gpa
,进行组内排序
最后选出 rank=1
的内容
四大排序
常用的是 rank()
和 dense_rank()
函数
rank
函数 排序的序号是 隔断 1 2 2 4 第一 第二 第二 第四
dense_rank 函数 排序的序号是 不隔断 1 2 3 4 第一 第二 第三 第四