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
相关产品推荐
相关产品推荐

