sql server 2005中的分区函数用法(partition by 字段)
2011-03-01 16:58
567 查看
sql server 2005中的分区函数用法(partition by 字段)
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 行受影响)
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 行受影响)
相关文章推荐
- sql server 2005中的分区函数用法(partition by 字段)
- sql server 2005 中的分区函数用法(partition by 字段)
- sql server 2005中的分区函数用法(partition by 字段)
- sql server 2005中的分区函数用法(partition by 字段)
- sql server 2005中的分区函数用法(partition by 字段)
- sql server 2005中的分区函数用法(partition by 字段)
- sql server 2005中的分区函数用法(partition by 字段)
- sql server 2005 中的分区函数用法(partition by 字段)
- sql server 2005 中的分区函数用法(partition by 字段)
- sql server 2005 中的分区函数用法(partition by 字段)
- sql server 2005中的分区函数用法(partition by 字段)
- sql server 2005中的分区函数用法(partition by 字段)
- sql server 2005中的分区函数用法(partition by 字段)
- sql server 2005 中的列置换函数用法(pivot 字段)
- 分区函数Partition By的与row_number()的用法以及与排序rank()的用法详解(获取分组(分区)中前几条记录)
- SQL Server 2005 中 ROW_NUMBER() 函数的简单用法
- SQL Server 2005------分区表和分区函数
- sql server 2005 使用clr函数压缩ntext类型字段
- sqlserver中分区函数 partition by的用法
- sql server 2005 replace 函数用法