现在的位置: 网页制作教程网站制作经验 >正文
SQL语句教程

Sqlserver中rank()和over()函数的介绍

发表于2020/5/15 网站制作经验 0条评论 ⁄ 热度 3,125℃

本文主要介绍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的情况。

  • 暂无评论