排名函数是SQL Server2005新加的功能。在SQL Server2005中有如下四个排名函数:
1. row_number 自动生成行号,序号由order by 字段决定
2. rank over Filed, 由rank over的字段决定,名次不连续,如有3个并列第一名,则后续名次直接从4开始
3. dense_rank,和rank相似,只是名次连续,如有3个并列第一名,则后续名次从2开始
4. ntile 提供均匀分组的排序函数,函数参数为分组的个数,如有10条记录返回,ntile参数指定为4,则各组记录数如下
1(3),2(3),3(2),4(2)
select
ntile(4) over(order by object_ID) as bucket,name from ( select top 10 * from sys.objects) x
bucket Name
-------------------- --------------------------------------------------------------------------------------------------------------------------------
1 sysrowsetcolumns
1 sysrowsets
1 sysallocunits
2 sysfiles1
2 syshobtcolumns
2 syshobts
3 sysftinds
3 sysserefs
4 sysowners
4 sysdbreg