sql server开窗函数
时间: 2023-09-06 19:11:55 浏览: 248
SQL Server中的开窗函数(Window functions)是一种在查询结果集中执行聚合计算、排序等操作的函数。与传统的聚合函数不同,开窗函数会将计算结果应用到整个结果集中的每一行,而不是仅对每个分组进行计算。
下面是几个常用的开窗函数:
1. ROW_NUMBER():为结果集中的每一行分配一个唯一的序号,序号从1开始递增。
2. RANK():计算结果集中每一行的排名,如果有并列的行,则会产生相同的排名。
3. DENSE_RANK():计算结果集中每一行的排名,如果有并列的行,则会跳过相同的排名。
4. NTILE(n):将结果集分成n个等份,并为每个等份分配一个编号。
5. LAG()和LEAD():分别返回结果集中当前行前面和后面的行的值。
以下是一些示例:
```sql
-- ROW_NUMBER
SELECT ROW_NUMBER() OVER (ORDER BY salary DESC) AS RowNum, name, salary
FROM employees;
-- RANK
SELECT RANK() OVER (ORDER BY salary DESC) AS Rank, name, salary
FROM employees;
-- DENSE_RANK
SELECT DENSE_RANK() OVER (ORDER BY salary DESC) AS DenseRank, name, salary
FROM employees;
-- NTILE
SELECT NTILE(4) OVER (ORDER BY salary DESC) AS Tile, name, salary
FROM employees;
-- LAG
SELECT name, salary, LAG(salary) OVER (ORDER BY salary DESC) AS PrevSalary
FROM employees;
```
开窗函数可以帮助我们更方便地进行数据分析和报表生成等任务。