sql 窗口函数
时间: 2023-07-19 13:16:52 浏览: 173
SQL 窗口函数(Window Functions)是一种在关系型数据库中进行分析和聚合数据的高级技术。与普通的聚合函数(如 SUM、AVG、MAX、MIN)不同的是,窗口函数可以在结果集中计算聚合函数,而不会改变结果集的行数。窗口函数可以用于计算排名、累计总数、移动平均值等。
以下是一些常用的 SQL 窗口函数:
1. ROW_NUMBER:为结果集中的每一行生成一个唯一的整数值,用于计算排名。
2. RANK 和 DENSE_RANK:用于计算排名,RANK 函数会跳过相同的排名,而 DENSE_RANK 函数不会。
3. LAG 和 LEAD:用于在结果集中获取前一行和后一行的值,常用于计算时间序列数据的变化量。
4. SUM、AVG、MAX、MIN 等聚合函数:可以和 OVER 关键字一起使用,计算所有行或者一组行的聚合值。
5. NTILE:用于将结果集分成指定数量的桶,并为每个桶分配一个整数值。
以下是一个示例 SQL 查询,使用 ROW_NUMBER 和 SUM 窗口函数计算每个订单的总金额和排名:
```
SELECT
order_id,
SUM(amount) OVER (PARTITION BY order_id) AS total_amount,
ROW_NUMBER() OVER (ORDER BY SUM(amount) DESC) AS rank
FROM
orders
```
希望这些信息可以帮助你了解 SQL 窗口函数的基本知识。
阅读全文