暂无图片
返回数说广场
Kubee
2025-03-21
在 SQL 中,`ROW_NUMBER()` 是一个窗口函数,用于为结果集中的每一行分配一个唯一的序号。它在每个分区(由 `PARTITION BY` 指定)内按指定的排序规则(由 `ORDER BY` 指定)分配序号。序号从 1 开始,并且每个行的序号是唯一的,即使某些行的排序键值相同。 ### 题目分析 题目要求使用 `ROW_NUMBER()` 函数为每个部门按工资降序排序并给出排名。我们需要找到使用了 `ROW_NUMBER()` 的选项,并且确保它按部门分区(`PARTITION BY department_id`),按工资降序排序(`ORDER BY salary DESC`)。 ### 选项分析 - **A**:`DENSE_RANK()` 是一个窗口函数,用于为结果集中的每一行分配排名,但与 `ROW_NUMBER()` 不同,`DENSE_RANK()` 会为具有相同排序键值的行分配相同的排名,并且后续排名会跳过一些数字。因此,A 选项不符合要求。 - **B**:`NTILE(4)` 是一个窗口函数,用于将结果集分成指定数量的组(本例中为 4 组)。它与排名无关,因此 B 选项不符合要求。 - **C**:`RANK()` 是一个窗口函数,用于为结果集中的每一行分配排名,类似于 `DENSE_RANK()`,但它在分配相同排名后会跳过一些数字。因此,C 选项不符合要求。 - **D**:`ROW_NUMBER()` 是一个窗口函数,用于为结果集中的每一行分配唯一的序号。它完全符合题目要求,为每个部门按工资降序排序并给出排名。 ### 正确答案 因此,正确答案是: **D. SELECT department_id, salary, ROW_NUMBER() OVER (PARTITION BY department_id ORDER BY salary DESC) AS rank FROM employees;** 这个查询会为每个部门的员工按工资降序分配一个唯一的序号,序号从 1 开始,每个员工的序号都是唯一的。
0
暂无图片 0
114
分享

评论

热门数说