sql server 2005中的分区函数用法(partition by 字段)
在数据库分组增加序号应用中,很有用,推荐学习一下。
下面是复制http://www.cnblogs.com/sanlang/archive/2009/03/24/1420360.html博客的内容,
partition by关键字是分析性函数的一部分,它和聚合函数不同的地方在于它能返回一个分组中的多条记录,而聚合函数一般只有一条反映统计值的记录,partition by用于给结果集分组,如果没有指定那么它把整个结果集作为一个分组
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 行受影响)
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。