如果你要按照字段A分组,分组后排序,再筛选出前面N行的记录。
那么一般来说优先使用 Dense_Rank() over(Partition By 字段A Order By 字段B Desc) AS Dense_Rank
Dense_Rank 排序方式,遇到重复的一行数据后再往下不会跳号。这样不会遗漏一行数据
4 个解决方案
#1
一般情况下,连同 row_number 一起介绍。
#2
row_number就是给每个分组标序列号用的
#3
例如现一个分组内有4行数据,其中2、3行数据重复。
row_number的排序为1 2 3 4
rank的排序为1 2 2 4
dense rank的排序为1 2 2 3
row_number的排序为1 2 3 4
rank的排序为1 2 2 4
dense rank的排序为1 2 2 3
#4
你说的没错,所以如果时要筛选多个的话推荐用dense rank
#1
一般情况下,连同 row_number 一起介绍。
#2
row_number就是给每个分组标序列号用的
#3
例如现一个分组内有4行数据,其中2、3行数据重复。
row_number的排序为1 2 3 4
rank的排序为1 2 2 4
dense rank的排序为1 2 2 3
row_number的排序为1 2 3 4
rank的排序为1 2 2 4
dense rank的排序为1 2 2 3
#4
你说的没错,所以如果时要筛选多个的话推荐用dense rank