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

SQL计算pwrDay表各指标环比差值及创建视图的方案咨询

电力指数相邻行差值计算解决方案

问题原因

  • 原有自关联方案错误:关联条件仅校验同月份下日期差值为1,跨月场景(如9月30日与10月1日)无法匹配上一行数据,存在缺失统计日时也会关联到错误的历史数据。
  • LAG函数报错原因:当前使用的MySQL版本低于8.0,窗口函数是MySQL 8.0版本新增特性,低版本无法识别;且原有LAG写法参数错误,偏移量填0会取当前行数据,计算差值永远为0。

解决方案

方案1:兼容所有MySQL版本的自关联写法

通过子查询匹配当前日期的上一个存在的统计日期,不受跨月、缺统计日影响:

SELECT
    curr.jour,
    curr.pwrconsohp - IFNULL(prev.pwrconsohp, 0) AS deltaconsoHP,
    curr.pwrconsohc - IFNULL(prev.pwrconsohc, 0) AS deltaconsoHC,
    curr.pwrprod - IFNULL(prev.pwrprod, 0) AS deltaProd
FROM pwrDay curr
LEFT JOIN pwrDay prev 
ON prev.jour = (SELECT MAX(jour) FROM pwrDay WHERE jour < curr.jour)
ORDER BY curr.jour;

方案2:MySQL 8.0及以上版本的LAG函数正确写法

指定窗口排序规则,设置正确的偏移量和缺省值:

SELECT
    jour,
    pwrconsohp - LAG(pwrconsohp, 1, 0) OVER(ORDER BY jour) AS deltaconsoHP,
    pwrconsohc - LAG(pwrconsohc, 1, 0) OVER(ORDER BY jour) AS deltaconsoHC,
    pwrprod - LAG(pwrprod, 1, 0) OVER(ORDER BY jour) AS deltaProd
FROM pwrDay
ORDER BY jour;

两种方案都可以直接用于创建视图,计算结果完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 13:15:00