贝利信息

SQL 使用窗口函数计算同比 / 环比

日期:2026-01-21 00:00 / 作者:舞夢輝影
SQL中计算同比和环比的核心是:先按时间分组聚合,再用LAG()拉取相邻周期值并运算;关键在时间对齐、分区清晰、空值处理。

SQL 中用窗口函数计算同比(Year-on-Year)和环比(Month-on-Month)的核心是:先按时间分组聚合,再用 LAG()LEAD() 拉取相邻周期的值,最后做差值或比值运算。关键在于时间对齐、分区逻辑清晰、空值处理得当。

准备基础数据:按时间聚合

原始明细表(如订单表)通常按天记录,需先按年月(或年份)汇总,生成时间序列基准表:

计算环比:上月 vs 本月

使用 LAG(value, 1) OVER (ORDER BY ym) 获取前一个自然月的值:

计算同比:去年同期 vs 今年同期

关键在正确“跨年对齐”,推荐两种方式:

注意事项与常见坑

实际写 SQL 时容易忽略这些细节: