一、窗口函数
1.1 窗口函数概述
窗口函数在一组相关的行上执行计算,同时保留原始行。与 GROUP BY 不同,窗口函数不会合并行。
1.2 窗口函数语法
-- 基本语法
function_name(args) OVER (
[PARTITION BY partition_expression]
[ORDER BY sort_expression [ASC|DESC] [NULLS {FIRST|LAST}]]
[frame_clause]
)
-- 窗口帧子句
ROWS BETWEEN frame_start AND frame_end
RANGE BETWEEN frame_start AND frame_end
GROUPS BETWEEN frame_start AND frame_end
-- frame_start / frame_end 选项
UNBOUNDED PRECEDING -- 分区开始
N PRECEDING -- 当前行前 N 行
CURRENT ROW -- 当前行
N FOLLOWING -- 当前行后 N 行
UNBOUNDED FOLLOWING -- 分区结束
-- 默认窗口帧
-- 有 ORDER BY: RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW
-- 无 ORDER BY: ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING
2026/3/20大约 15 分钟