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

如何在SQL中构建CASE表达式实现2023年数据的简单预测?

解决方案

先通过子查询计算出各年份的实际box总和,再利用窗口函数LAG()获取前一年的box值,最后通过CASE表达式替换2023年的0值为预测值:

WITH yearly_box AS (
    SELECT 
        EXTRACT(YEAR FROM item_.transaction_date)::INT AS year,
        SUM(CASE WHEN EXTRACT(YEAR FROM CURRENT_DATE) > EXTRACT(YEAR FROM item_.transaction_date) 
                 THEN item_.cost 
                 ELSE 0 END) AS box
    FROM item_
    GROUP BY year
)
SELECT 
    year,
    CASE 
        WHEN year = EXTRACT(YEAR FROM CURRENT_DATE)::INT AND box = 0 
        THEN LAG(box) OVER (ORDER BY year) * 1.5
        ELSE box 
    END AS box
FROM yearly_box
ORDER BY year;

代码说明

  • CTE yearly_box:完成原查询逻辑,计算各年份的实际box总和,2023年此时返回0。
  • 窗口函数LAG(box) OVER (ORDER BY year):按年份排序后,获取当前行的前一行(上一年)的box值。
  • CASE表达式:判断当前年份是否为系统当前年份且实际box为0,若是则用上一年的box乘以系数1.5得到预测值,否则保留实际计算的box值。

执行后得到期望结果:

yearbox
2019189.13
2020104.70
2021228.40
2022335.84
2023503.76

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 02:17:40