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

SQL计算电力使用量:平均功率乘当日时长的代码问题求助

问题分析与SQL修正方案

嘿,先理清楚你的核心诉求:你想先算出过去24小时各回路的平均功率,求和得到总平均功率后,再乘以当天00:00到当前时间的小时差,最终得到电力使用量对吧?你的现有SQL有几个关键问题导致没达到预期,我帮你梳理并修正:

现有SQL的核心问题

  1. GROUP BY TS搞砸了平均值计算:
    你加了GROUP BY TS,这会让查询返回每一个时间戳(TS)对应的功率值,而变量@APower24Cell这类只能存储最后一行的结果,完全不是你要的「过去24小时整体平均功率」,必须去掉这个分组。

  2. 当天0点到当前时间的小时差计算错误:
    你写的那段复杂的日期转换是错的,正确的当天00:00:00可以用更简洁可靠的方式获取,不用拼接字符串。

修正后的完整SQL代码

-- 先声明所有需要用到的变量,明确类型避免隐式转换问题
DECLARE @APower24Cell FLOAT, @BPower24Cell FLOAT, @CPower24Cell FLOAT
DECLARE @APower35Cell FLOAT, @BPower35Cell FLOAT, @CPower35Cell FLOAT
DECLARE @FULLPOWER FLOAT
DECLARE @TodayMidnight DATETIME = CAST(CAST(GETDATE() AS DATE) AS DATETIME) -- 直接获取当天00:00:00

-- 计算过去24小时各回路的平均功率(去掉GROUP BY TS,求整体平均值)
SELECT 
    @APower24Cell = AVG((CAST(ACurrent24Cell AS FLOAT) * CAST(AVoltage3Sec AS FLOAT)) / 10 / 1000),
    @BPower24Cell = AVG((CAST(BCurrent24Cell AS FLOAT) * CAST(BVoltage3Sec AS FLOAT)) / 10 / 1000),
    @CPower24Cell = AVG((CAST(CCurrent24Cell AS FLOAT) * CAST(CVoltage3Sec AS FLOAT)) / 10 / 1000),
    @APower35Cell = AVG((CAST(ACurrent35Cell AS FLOAT) * CAST(AVoltage3Sec AS FLOAT)) / 10 / 1000),
    @BPower35Cell = AVG((CAST(BCurrent35Cell AS FLOAT) * CAST(BVoltage3Sec AS FLOAT)) / 10 / 1000),
    @CPower35Cell = AVG((CAST(CCurrent35Cell AS FLOAT) * CAST(CVoltage3Sec AS FLOAT)) / 10 / 1000)
FROM Energomonitoring 
WHERE TS >= DATEADD(HOUR, -24, GETDATE())

-- 计算总电力使用量:总平均功率 × 当天已过小时数
SET @FULLPOWER = (@APower24Cell + @BPower24Cell + @CPower24Cell + @APower35Cell + @BPower35Cell + @CPower35Cell) 
                 * DATEDIFF(HOUR, @TodayMidnight, GETDATE())

-- 可选:查看最终计算结果
SELECT @FULLPOWER AS TotalElectricityUsage_KWh

额外优化建议

如果你的表中ACurrent24Cell、AVoltage3Sec这类字段存在NULL值,建议用ISNULL()包裹计算式,避免NULL导致平均值不准确,比如:

@APower24Cell = AVG(ISNULL((CAST(ACurrent24Cell AS FLOAT) * CAST(AVoltage3Sec AS FLOAT)) / 10 / 1000, 0))

这样处理后,就能准确得到你想要的电力使用量结果啦~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.12 05:23:35