您当前的位置:首页 > 计算机 > 软件应用 > 数据库 > MSSQL

sqlserver中分区函数 partition by的用法

时间:03-19来源:作者:点击数:

partitionby关键字是分析性函数的一部分,它和聚合函数不同的地方在于它能返回一个分组中的多条记录,而聚合函数一般只有一条反映统计值的记录,partitionby用于给结果集分组,如果没有指定那么它把整个结果集作为一个分组

create database StudentDB

go

use StudentDB

go

create table Student--学生成绩表

(

id int,--主键

Grade int, --班级

Score int --分数

)

go

insert Student

select 1,1,88

union all select 2,1,66

union all select 3,1,75

union all select 4,2,30

union all select 5,2,70

union all select 6,2,80

union all select 7,2,60

union all select 8,3,90

union all select 9,3,70

union all select 10,3,80

go

--所有学生信息

select * from Student

id          Grade       Score
----------- ----------- -----------
1           1           88
2           1           66
3           1           75
4           2           30
5           2           70
6           2           80
7           2           60
8           3           90
9           3           70
10          3           80

(10 行受影响)

--不分班按学生成绩排名

select *,ROW_NUMBER() over(order by Score desc) as Sequence from Student

id          Grade       Score       Sequence
----------- ----------- ----------- --------------------
8           3           90          1
1           1           88          2
6           2           80          3
10          3           80          4
3           1           75          5
9           3           70          6
5           2           70          7
2           1           66          8
7           2           60          9
4           2           30          10

(10 行受影响)

--分班后按学生成绩排名

select *,row_number() over(partition by Grade order by Score desc) as Sequence from Student

id          Grade       Score       Sequence
----------- ----------- ----------- --------------------
1           1           88          1
3           1           75          2
2           1           66          3
6           2           80          1
5           2           70          2
7           2           60          3
4           2           30          4
8           3           90          1
10          3           80          2
9           3           70          3

(10 行受影响)

---------------------

方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门