ROW_NUMBER()
函数在SQL中用于为查询结果集中的每一行分配一个唯一的连续整数。这个整数可以作为行号,通常用于排序、分组或标识行。ROW_NUMBER()
函数通常与OVER()
子句一起使用,以指定排序的依据和顺序。
下面是一个简单的例子,展示了如何使用ROW_NUMBER()
函数:
SELECT ROW_NUMBER() OVER (ORDER BY age) AS row_num, name, age FROM people;
在这个例子中,我们从people
表中选择所有行,并使用ROW_NUMBER()
函数为每一行分配一个基于age
列的顺序行号。结果集将包含一个名为row_num
的列,表示每行的行号。
你还可以使用其他排序依据,例如:
SELECT ROW_NUMBER() OVER (ORDER BY age DESC) AS row_num, name, age FROM people;
在这个例子中,行号将根据age
列的降序排列。
此外,你还可以使用窗口函数(如SUM()
、AVG()
等)与ROW_NUMBER()
函数结合使用,以计算基于行号的聚合值。例如:
SELECT SUM(salary) OVER (ORDER BY id ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS running_total_salary, id, salary FROM employees;
在这个例子中,我们计算了基于id
列的顺序的累积薪资。ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW
表示计算从当前行之前的所有行到当前行的累积值。