分组函数 partition by 的详解,与order by 区别

数据大师
数据大师
数据大师
294
文章
0
评论
2021-07-1511:51:31 评论 1,167 814字
摘要

partition by关键字是分析性函数的一部分,它和聚合函数(如group by)不同的地方在于它能返回一个分组中的多条记录,而聚合函数一般只有一条反映统计值的记录

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

更多文章前往首页浏览http://www.itongji.cn/

  • 我的微信公众号
  • 微信扫一扫
  • weinxin
  • 我的微信公众号
  • 微信扫一扫
  • weinxin
匿名

发表评论

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: