You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用PostgreSQL计算销售额同比增长率:基于Superstore数据集实操问题

销售额同比增长率计算方案

现有代码问题修正

你当前编写的代码存在一处语法错误:SUM(sales) AS total_sales 后多了多余的逗号,会直接导致查询报错,删除该逗号即可完成基础的年度销售额统计。

同比增长率完整实现

计算销售额同比增长率可使用SQL窗口函数LAG()获取上一年的销售额数据,再套用通用同比公式计算即可,同比计算逻辑为:(当年销售额 - 上年销售额) / 上年销售额 * 100
完整查询代码如下:

SELECT 
    order_year,
    total_sales,
    last_year_sales,
    -- 计算同比增长率,保留2位小数,通过NULLIF避免上年销售额为0时的除以0报错
    ROUND(
        (total_sales - last_year_sales) / NULLIF(last_year_sales, 0) * 100,
        2
    ) AS sales_yoy_growth_pct
FROM (
    -- 内层子查询先统计每年的总销售额,同时获取上一年销售额
    SELECT 
        EXTRACT(year FROM order_date) AS order_year,
        SUM(sales) AS total_sales,
        LAG(SUM(sales)) OVER (ORDER BY EXTRACT(year FROM order_date)) AS last_year_sales
    FROM orders
    -- 若需要统计2019年全年数据,可将结束日期调整为DATE '2019-12-31'
    WHERE order_date BETWEEN DATE '2016-01-01' AND DATE '2019-12-01'
    GROUP BY EXTRACT(year FROM order_date)
    ORDER BY order_year
) AS annual_sales_stats;

代码说明

  • 返回字段sales_yoy_growth_pct为同比增长率百分比,例如返回值为12.34即代表当年销售额较上年增长12.34%
  • 如果需要计算月度同比,只需将聚合维度调整为「年份+月份」,窗口函数的排序逻辑也对应修改为按年月排序即可

内容的提问来源于stack exchange,提问作者Oliver S

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 13:45:05