本文主要介绍Sqlserver中函数rank()和over()函数的使用。
数据库:sqlServer2008R2 英文版。
1.准备数据:
CREATE TABLE TEST_OVER_01 ( a INT, b INT, c CHAR ) INSERT INTO TEST_OVER_01 VALUES(1,3,'E') INSERT INTO TEST_OVER_01 VALUES(2,4,'A') INSERT INTO TEST_OVER_01 VALUES(3,2,'D') INSERT INTO TEST_OVER_01 VALUES(3,5,'B') INSERT INTO TEST_OVER_01 VALUES(4,2,'C') INSERT INTO TEST_OVER_01 VALUES(2,4,'B') INSERT INTO TEST_OVER_01 VALUES(4,5,'F') INSERT INTO TEST_OVER_01 VALUES(4,6,'G')
2.测试查询:
查询所有
select * from TEST_OVER_01
整个结果集是个分组,以b进行排名
select a , b, c , RANK() over(order by b) rank1 from TEST_OVER_01
整个结果集进行分组,以a进行排名
select a, b, c, RANK() over(order by a) rank2 from TEST_OVER_01
以a,b 进行分组,在每个小组内以b进行排名
select a, b ,c ,RANK() over(partition by a,b order by b) rank3 from TEST_OVER_01
Sqlserver中rank()和over()函数总结:
rank() over(partition by 列1,列2等 order by 列xx )
partition by -- 用于给结果集分组,如果没有指定,则是对整个结果集作为一个分组。
rank() -- 用于在分组内部进行排序。需要注意的是,ran()是跳跃排序,即:如果有两个第1名,则接下来就是第3,忽略第2的情况。
声明:如需转载,请注明来源于www.webym.net并保留原文链接:http://www.webym.net/jiaocheng/1088.html