首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >SQL RANK()与ROW_NUMBER()

SQL RANK()与ROW_NUMBER()
EN

Stack Overflow用户
提问于 2011-10-13 06:26:38
回答 2查看 297K关注 0票数 236

我对它们之间的区别感到困惑。运行下面的SQL会得到两个标识结果集。有没有人能解释一下其中的区别?

代码语言:javascript
复制
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
EN

回答 2

Stack Overflow用户

发布于 2011-10-13 06:31:11

相当多:

一行的排名是1加上在该行之前出现的排名的数量。

Row_number是行的不同排名,在排名中没有任何差距。

http://www.bidn.com/blogs/marcoadf/bidn-blog/379/ranking-functions-row_number-vs-rank-vs-dense_rank-vs-ntile

票数 4
EN

Stack Overflow用户

发布于 2015-06-23 07:18:03

我没有做任何关于排名的事情,但是我今天用row_number()发现了这一点。

代码语言:javascript
复制
select item, name, sold, row_number() over(partition by item order by sold) as row from table_name

这将导致一些重复的行号,因为在我的例子中,每个名称包含所有项。每件商品将按售出数量排序。

代码语言:javascript
复制
+--------+------+-----+----+
|glasses |store1|  30 | 1  |
|glasses |store2|  35 | 2  |
|glasses |store3|  40 | 3  |
|shoes   |store2|  10 | 1  |
|shoes   |store1|  20 | 2  |
|shoes   |store3|  22 | 3  |
+--------+------+-----+----+
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7747327

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档