我对这两者之间的区别感到困惑.运行下面的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

推荐答案

ROW_NUMBER :返回以1开头的每一行的唯一数字.对于具有重复值的行,将随机分配数字.

Rank :为从1开始的每一行分配一个唯一的编号,但具有重复值的行除外,在这种情况下,将分配相同的排名,并且在每个重复排名的序列中出现一个间隙.

Sql相关问答推荐

即使缺少某些行,如何查找特定窗口期的平均销售额

带有双引号的json在Presto中是否有区别对待?

Oracle中的分层查询

如何查询未命名对象的SON数组

将SEMI JOIN、ANTI JOIN转换为非连接SQL

Trino/Presto sq:仅当空值位于组中第一个非空值之后时,才用值替换空值

如何使用ROW_NUM() Select 一个没有第二条记录的实例?

雅典娜嵌套Json提取液

如何实现同一列的递归计算?

在PostgreSQL中汇总连接表中的 case 值

SQL将三个表中的三列组合为一列

组合2个分区表的postgres视图的执行计划正在访问所有分区

同时插入和更新记录

将时间戳四舍五入到最近 10 分钟的查询

获取上个月和上一年的值

什么是 100.它与 100 有什么区别?

PostgreSQL 中将数据从 JSONB 类型转换为 Array 类型

计算 BigQuery 中列的中值差 - 分析函数不能作为聚合函数的参数

Select 给定类别列表(或更多类别)中的所有事物

超过100名员工的连续行