partition by用于给结果集分组,如果没有指定那么它把整个结果集作为一个分组。
partition by 与group by不同之处在于前者返回的是分组里的每一条数据,并且可以对分组数据进行排序操作。后者只能返回聚合之后的组的数据统计值的记录。
数据库表结构 学生成绩表 UserGrade
Id int Checked 主键IdName varchar(50) Checked 学生名Course varchar(50) Checked 课程名Score int Checked 分数
1.把每个人学生的成绩按照升序排名 (思路:根据学生姓名分组 根据每个人成绩排序)
select *,ROW_NUMBER() over( partition by Name order by Score )排名from UserGrade
查询结果
Id Name Course Score 排名1004 李四 数学 60 11005 李四 语文 80 21001 李四 英语 100 31007 王五 数学 30 11006 王五 语文 50 21003 王五 英语 50 31008 张三 英语 60 11000 张三 语文 80 21002 张三 数学 90 3
2、把每个学科的成绩分别进行排名 (思路:根据学科分组 根据成绩排序)
select *,ROW_NUMBER() over( partition by Course order by Score )排名from UserGrade
查询结果
Id Name Course Score 排名1002 张三 数学 90 11004 李四 数学 60 21007 王五 数学 30 31001 李四 英语 100 11008 张三 英语 60 21003 王五 英语 50 31000 张三 语文 80 11005 李四 语文 80 21006 王五 语文 50 3
End.
本文转自:双间
本文为转载分享,如果涉及作品、版权和其他问题,请联系我们第一时间删除(微信号:lovedata0520)
- 我的微信公众号
- 微信扫一扫
-
- 我的微信公众号
- 微信扫一扫
-
评论