sqlserver 中row_number,rank,dense_rank,ntile排名函数的用法

时间:2024-05-03 23:06:44

1.row_number() 就是行号

sqlserver 中row_number,rank,dense_rank,ntile排名函数的用法

2.rank:类似于row_number,不同之处在于,它会对order by 的字段进行处理,如果这个字段值相同,那么,行号保持不变

sqlserver 中row_number,rank,dense_rank,ntile排名函数的用法

3.dense_rank:与rank类似,不同之处在于行号是否保留一个位置,rank对保留这个位置,即上面图中,row的值由1直接变为3,因为它的1出现了两次,所以为2保留了一个位置,而dense_rank不会保留2这个位置,即实现的行号2其实是排在了第3位

sqlserver 中row_number,rank,dense_rank,ntile排名函数的用法

4.ntile函数可以对序号进行分组处理。这就相当于将查询出来的记录集放到指定长度的数组中,每一个数组元素存放一定数量的记录。ntile函 数为每条记录生成的序号就是这条记录所有的数组元素的索引(从1开始)。也可以将每一个分配记录的数组元素称为“桶”。ntile函数有一个参数,用来指 定桶数。

sqlserver 中row_number,rank,dense_rank,ntile排名函数的用法