我对它们之间的区别感到困惑。运行下面的SQL会得到两个标识结果集。有没有人能解释一下其中的区别?
SELECT ID, [Description], RANK() OVER(PARTITION BY StyleID ORDER BY ID) as 'Rank' FROM SubStyle
SELECT ID, [Description], ROW_NUMBER() OVER(PARTITION BY StyleID ORDER BY ID) as 'RowNumber' FROM SubStyle
发布于 2011-10-13 06:31:11
相当多:
一行的排名是1加上在该行之前出现的排名的数量。
Row_number是行的不同排名,在排名中没有任何差距。
发布于 2015-06-23 07:18:03
我没有做任何关于排名的事情,但是我今天用row_number()发现了这一点。
select item, name, sold, row_number() over(partition by item order by sold) as row from table_name
这将导致一些重复的行号,因为在我的例子中,每个名称包含所有项。每件商品将按售出数量排序。
+--------+------+-----+----+
|glasses |store1| 30 | 1 |
|glasses |store2| 35 | 2 |
|glasses |store3| 40 | 3 |
|shoes |store2| 10 | 1 |
|shoes |store1| 20 | 2 |
|shoes |store3| 22 | 3 |
+--------+------+-----+----+
https://stackoverflow.com/questions/7747327
复制相似问题