ROW_NUMBER() 为每一行分配一个唯一的整数,用于在每个分区内对行举行排序并编号。
可以帮助我们对数据举行分区后排序,获取排名信息。
具体来说,ROW_NUMBER() 是一种分析函数,它可以根据 ORDER BY 子句中指定的列对行举行排序,并为每个分区内的行根据排序结果来分配唯一的连续编号。 PARTITION BY 子句类似于 GROUP BY 用于分组,该子句指定希望分区的列或表达式。行号将在每个分区内分配,然后重新开始为下一个分区分配。
基本用法
SELECT
name,
score,
ROW_NUMBER() OVER (ORDER BY score DESC) as rank
FROM students;
复制代码
实际应用场景:查找每个部门的前N名员工
假设我们要找出每个部门薪资最高的3名员工:
CREATE TABLE employees (
id INT,
name VARCHAR(50),
department VARCHAR(50),
salary DECIMAL(10, 2)
);
INSERT INTO employees (id, name, department, salary) VALUES