加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

sqlserver中分区函数 partition by的用法

发布时间:2020-12-12 13:45:39 所属栏目:MsSql教程 来源:网络整理
导读:partition? by关键字是分析性函数的一部分,它和聚合函数(如group by)不同的地方在于它能返回一个分组中的多条记录,而聚合函数一般只有一条反映统计值的记录, partition? by用于给结果集分组,如果没有指定那么它把整个结果集作为一个分组。 partition b

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

partition? by用于给结果集分组,如果没有指定那么它把整个结果集作为一个分组。

partition by 与group by不同之处在于前者返回的是分组里的每一条数据,并且可以对分组数据进行排序操作。后者只能返回聚合之后的组的数据统计值的记录。

?

Demo?

数据库表结构?学生成绩表?UserGrade

Id ? ? ? ?int ? ? ? ? ? ? ?Checked ? ? 主键Id
Name ? varchar(50) Checked ? ? 学生名
Course varchar(50) Checked ? ? 课程名
Score ? int ? ? ? ? ? ? Checked ? ? ?分数

01、把每个人学生的成绩按照升序排名 (思路:根据学生姓名分组 根据每个人成绩排序)

sql语句?

select *,ROW_NUMBER() over( partition by Name order by Score )排名
from UserGrade

查询结果

Id Name Course Score 排名
1004 李四 数学 60 1
1005 李四 语文 80 2
1001 李四 英语 100 3
1007 王五 数学 30 1
1006 王五 语文 50 2
1003 王五 英语 50 3
1008 张三 英语 60 1
1000 张三 语文 80 2
1002 张三 数学 90 3

02、把每个学科的成绩分别进行排名 (思路:根据学科分组 根据成绩排序)

sql语句?

from UserGrade

Id Name Course Score 排名 1002 张三 数学 90 1 1004 李四 数学 60 2 1007 王五 数学 30 3 1001 李四 英语 100 1 1008 张三 英语 60 2 1003 王五 英语 50 3 1000 张三 语文 80 1 1005 李四 语文 80 2 1006 王五 语文 50 3

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读