在 SQL 中,窗口函数是一种特殊的函数,它可以在结果集的特定窗口或分区上计算聚合、排名、行数和其他类似的分析操作。下面是一些常见的窗口函数:
1. ROW_NUMBER:为结果集的每一行分配一个唯一的整数值。
select
Score,
ROW_NUMBER() over(order by Score DESC)
as Rank from Scores
2. RANK:为结果集的每一行分配一个唯一的排名(相同值具有相同的排名,下一个值的排名将递增)。
select
Score,
rank() over(order by Score DESC)
as Rank from Scores
3. DENSE_RANK:为结果集的每一行分配一个唯一的密集排名(相同值具有相同的排名,下一个值的排名可能会跳过)。
select
Score,
DENSE_RANK() over(order by Score DESC)
as Rank from Scores
4. NTILE:将结果集划分为指定数量的相等大小的桶,然后为每个桶分配一个标识号。
SELECT column1, NTILE(4) OVER (ORDER BY column1) AS bucket
FROM your_table;
5. SUM, AVG, MIN, MAX:这些聚合函数可以与窗口函数一起使用,在特定的窗口或分区上计算聚合值。
SELECT column1, SUM(column2) OVER (PARTITION BY column3) AS total
FROM your_table;
6. LEAD 和 LAG:LEAD 函数用于获取当前行后面的指定偏移量处的值,LAG 函数用于获取当前行前面的指定偏移量处的值。
SELECT column1, LEAD(column1, 1) OVER (ORDER BY column1) AS next_value
FROM your_table;
7.FIRST_VALUE():计算结果集中指定列的第一个值。
8.LAST_VALUE():计算结果集中指定列的最后一个非 NULL 值。
9.PERCENT_RANK():计算结果集中每行的百分数排名。
10.CUME_DIST():计算结果集中每行的累积分布值。
以上是一些常见的窗口函数示例,它们提供了在查询中进行数据分析的强大功能。窗口函数可以根据业务需求进行灵活的应用,使我们能够根据特定的窗口和排序规则计算出有用的统计信息。