select RANK() over(partition by a order by id desc) from tb
select ROW_NUMBER() over(partition by a order by id desc) from tb
select DENSE_RANK() over (partition by a order by id desc) from tb
1、rank和row_number唯一的区别是,rank当排名相同时用相同的排名,如有两个7名,则下一个名次为9而不是8
2、rank()和 dense_rank()的区别是,dense_rank()排名是连续的,有相同的排名时候,下一个名词还是连续的,比如
如果有两个7,则 dense_rank()下一个排名为8,而 rank()下一个排名为9
select ntile(4) over(order by id) as bucket,* from tb
将数据分成四个组排序
实际上通过两个约定就可以产生一个算法来决定哪一个桶应放多少记录,这两个约定如下:
1. 编号小的桶放的记录不能小于编号大的桶。也就是说,第1捅中的记录数只能大于等于第2桶及以后的各桶中的记录。
2. 所有桶中的记录要么都相同,要么从某一个记录较少的桶开始后面所有捅的记录数都与该桶的记录数相同。也就是说,如果有个桶,前三桶的记录数都是10,而第4捅的记录数是6,那么第5桶和第6桶的记录数也必须是6
sql server一些排名函数用法
最新推荐文章于 2024-01-24 08:00:00 发布