博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
sqlserver中分区函数 partition by的用法
阅读量:7086 次
发布时间:2019-06-28

本文共 1105 字,大约阅读时间需要 3 分钟。

需求场景:

 

表结构及数据:

 

查询效果:

 

思路:

 

sql语句:

 

查询结果:

 

=========================感谢下面这些博主的博客=============================

转自:

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语句 

select *,ROW_NUMBER() over( partition by Course order by Score )排名

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

转载于:https://www.cnblogs.com/yadongliang/p/9297083.html

你可能感兴趣的文章
OpenExpressApp 框架结构(2)
查看>>
read和变量设定方式
查看>>
1-4常用路由协议的梳理
查看>>
利用UltraISO制作RedhatU盘启动盘
查看>>
python 查找正则所有的匹配结果
查看>>
struts 拦截器
查看>>
java集合 set list map
查看>>
常用数据库优化
查看>>
Qt学习之路(2):Hello, world!
查看>>
CSS3阴影 box-shadow的使用和技巧总结
查看>>
easyui datagrid 初始化排序按钮不显示的问题
查看>>
5分钟GET一场清华大数据讲座实战应用案例干货
查看>>
测者的测试技术手册:自动的自动化框架EvoSuite集成Cobertura得到可视化的代码覆盖报告...
查看>>
集成LinearLayout时遇到的问题
查看>>
单利模式的好处
查看>>
Microsoft Silverlight 官方版
查看>>
centos6.8 python2.6.6 升级到2.7.4
查看>>
闲话选择排序算法
查看>>
高度用百分比 css
查看>>
魔窗--H5网页唤醒APP
查看>>