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

SQL中LAG()函数在存在可用历史行的情况下始终返回0的问题求助

SQL中LAG()函数在存在可用历史行的情况下始终返回0的问题求助

大家好,我最近碰到个SQL的棘手问题,折腾半天没搞懂,想请各位帮忙看看:

我正在用LAG()函数计算每个出租车司机当月小费总和与上月小费总和的变化率,但明明数据里有对应的历史行可以参考,LAG()函数却每一行都返回0,导致我的计算结果完全不对。

这是我目前在用的查询语句:

SELECT 
    td.taxi_id,
    td.year,
    td.month,
    td.tips_sum,
    (td.tips_sum - 
    LAG(td.tips_sum, 1, 0) OVER (PARTITION BY td.taxi_id ORDER BY td.year, td.month) /
    NULLIF(LAG(td.tips_sum, 1, 0) OVER (PARTITION BY td.taxi_id ORDER BY td.year, td.month), 0) AS tips_change
FROM 
    tips_data td
ORDER BY 
    td.tips_sum DESC
LIMIT 3

目前得到的结果里,所有行的LAG()返回值都是0,完全没取到对应的上月数据,和我预期的结果差得很远。

备注:内容来源于stack exchange,提问作者Anya Pasko

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.17 12:44:33