在SQL中内置了,ROW_NUMBER(),DENSE_RANK() ,DENSE_RANK()三个函数,下面对三个函数的使用结果进行比较。
首先我们使用下面的T-SQL语句建立一个测试表:
use demo
go
create table test
(orderid int,
qty int
)
go
insert test values(30001,10)
insert test values(10001,10)
insert test values(10006,10)
insert test values(40005,10)
insert test values(30003,15)
insert test values(30004,20)
insert test values(20002,20)
insert test values(20001,20)
insert test values(10005,30)
insert test values(30007,30)
insert test values(40001,40)
Go
select * from test
查询最后的select语句,返回结果如下:
orderid qty
30001 10
10001 10
10006 10
40005 10
30003 15
30004 20
20002 20
20001 20
10005 30
30007 30
40001 40
最后使用三个内置函数来进行结果比较:
SELECT orderid,qty,
ROW_NUMBER() OVER(ORDER BY qty) AS rownumber,
RANK() OVER(ORDER BY qty) AS rank,
DENSE_RANK() OVER(ORDER BY qty) AS denserank
FROM test
结果如下: