ROW_NUMBER()
函數(shù)在SQL中用于為查詢結(jié)果集中的每一行分配一個唯一的連續(xù)整數(shù)。這個整數(shù)可以作為行號,通常用于排序、分組或標識行。ROW_NUMBER()
函數(shù)通常與OVER()
子句一起使用,以指定排序的依據(jù)和順序。
下面是一個簡單的例子,展示了如何使用ROW_NUMBER()
函數(shù):
SELECT
ROW_NUMBER() OVER (ORDER BY age) AS row_num,
name,
age
FROM
people;
在這個例子中,我們從people
表中選擇所有行,并使用ROW_NUMBER()
函數(shù)為每一行分配一個基于age
列的順序行號。結(jié)果集將包含一個名為row_num
的列,表示每行的行號。
你還可以使用其他排序依據(jù),例如:
SELECT
ROW_NUMBER() OVER (ORDER BY age DESC) AS row_num,
name,
age
FROM
people;
在這個例子中,行號將根據(jù)age
列的降序排列。
此外,你還可以使用窗口函數(shù)(如SUM()
、AVG()
等)與ROW_NUMBER()
函數(shù)結(jié)合使用,以計算基于行號的聚合值。例如:
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
表示計算從當前行之前的所有行到當前行的累積值。