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

MySQL优化用电数据统计:合并峰谷及总用量查询

合并查询实现按站点统计昨日峰谷及总用电量

假设表结构(基于你提到的表)

  • NMIList:存储站点基础信息
    • nmi:站点唯一标识(主键)
    • site_name:站点名称
  • Elecdata:存储间隔用电数据
    • nmi:关联站点的外键
    • reading_time:记录时间(DATETIME类型)
    • kwh:该时间间隔的用电量

合并后的SQL查询语句

将三个独立查询合并为一个,通过条件聚合实现单查询输出结构化结果:

SELECT
    nl.site_name AS 站点名称,
    SUM(CASE
        WHEN TIME(ed.reading_time) BETWEEN '09:00:00' AND '20:59:59' THEN ed.kwh
        ELSE 0
    END) AS 峰期用电量(kWh),
    SUM(CASE
        WHEN TIME(ed.reading_time) NOT BETWEEN '09:00:00' AND '20:59:59' THEN ed.kwh
        ELSE 0
    END) AS 谷期用电量(kWh),
    SUM(ed.kwh) AS 总用电量(kWh)
FROM
    NMIList nl
LEFT JOIN
    Elecdata ed ON nl.nmi = ed.nmi
        AND DATE(ed.reading_time) = DATE_SUB(CURDATE(), INTERVAL 1 DAY)
GROUP BY
    nl.site_name
ORDER BY
    nl.site_name;

关键说明

  1. 昨日数据筛选:DATE_SUB(CURDATE(), INTERVAL 1 DAY)自动匹配昨日日期,兼容5/15分钟间隔的记录。
  2. 峰谷时段自定义:如果你的峰谷时段不是09:00-20:59,直接修改TIME(ed.reading_time)的判断区间即可。
  3. 空数据处理:使用LEFT JOIN确保无昨日用电数据的站点也会显示(用电量为0)。
  4. 结构化输出:每个站点一行数据,直接得到峰期、谷期、总用量的统计结果,无需手动合并多查询输出。

示例输出

站点名称峰期用电量(kWh)谷期用电量(kWh)总用电量(kWh)
城东变电站185.672.3257.9
城西工业园241.258.7299.9
郊区分站000

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 11:21:21