首页 > 数据库 > mysql教程 > 如何通过SN计算MySQL中连续行之间的能耗差异?

如何通过SN计算MySQL中连续行之间的能耗差异?

Patricia Arquette
发布: 2025-01-10 12:03:43
原创
296 人浏览过

How to Calculate Energy Consumption Differences Between Consecutive Rows in MySQL by SN?

MySQL:按序列号 (SN) 计算连续行之间的能耗差异

本文档概述了一种计算 MySQL 数据库中连续行之间能耗差异的方法,按序列号 (SN) 分组。

问题:

给定一个包含能源消耗数据的表,目标是计算每个 SN 的消耗差异,表示该特定 SN 当前值与先前值之间的变化。

示例数据:

下表 (EnergyLog) 说明了初始数据结构:

SN Date Value
2380 2012-10-30 00:15:51 21.01
2380 2012-10-31 00:31:03 22.04
2380 2012-11-01 00:16:02 22.65
2380 2012-11-02 00:15:32 23.11
20100 2012-10-30 00:15:38 35.21
20100 2012-10-31 00:15:48 37.07
20100 2012-11-01 00:15:49 38.17
20100 2012-11-02 00:15:19 38.97
20103 2012-10-30 10:27:34 57.98
20103 2012-10-31 12:24:42 60.83

期望输出:

查询应生成一个添加了 Consumption 列的表:

SN Date Value Consumption
2380 2012-10-30 00:15:51 21.01 0.00
2380 2012-10-31 00:31:03 22.04 1.03
2380 2012-11-01 00:16:02 22.65 0.61
2380 2012-11-02 00:15:32 23.11 0.46
20100 2012-10-30 00:15:38 35.21 0.00
20100 2012-10-31 00:15:48 37.07 1.86
20100 2012-11-01 00:15:49 38.17 1.10
20100 2012-11-02 00:15:19 38.97 0.80
20103 2012-10-30 10:27:34 57.98 0.00
20103 2012-10-31 12:24:42 60.83 2.85

SQL 解决方案:

以下 SQL 查询利用用户定义的变量来实现所需的结果:

<code class="language-sql">SELECT
    EL.SN,
    EL.Date,
    EL.Value,
    IF(@lastSN = EL.SN, EL.Value - @lastValue, 0.00) AS Consumption,
    @lastSN := EL.SN,
    @lastValue := EL.Value
FROM
    EnergyLog EL,
    (SELECT @lastSN := 0, @lastValue := 0) AS SQLVars
ORDER BY
    EL.SN,
    EL.Date;</code>
登录后复制

说明:

  • @lastSN@lastValue:这些是初始化为 0 的用户定义变量。@lastSN 跟踪最后处理的 SN,@lastValue 存储最后处理的值。
  • IF(@lastSN = EL.SN, EL.Value - @lastValue, 0.00):此条件语句检查当前 SN 是否与之前的 SN 相同。如果为true,则计算消耗差额;否则,它将消耗设置为 0.00(对于每个 SN 的第一个条目)。
  • @lastSN := EL.SN, @lastValue := EL.Value:这些赋值在处理每一行后更新用户定义的变量。
  • ORDER BY EL.SN, EL.Date:此子句确保按正确的顺序处理行(先按 SN,然后按日期)以进行准确的差异计算。

该方法利用MySQL的变量处理能力,有效计算每个SN的能耗差异。 ORDER BY 的使用对于结果的正确性至关重要。

以上是如何通过SN计算MySQL中连续行之间的能耗差异?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板