首页 > 数据库 > mysql教程 > 如何在分组 MySQL 查询中减去前一行的值?

如何在分组 MySQL 查询中减去前一行的值?

DDD
发布: 2025-01-10 12:37:42
原创
915 人浏览过

How to Subtract the Previous Row's Value in a Grouped MySQL Query?

MySQL:分组查询中减去前一行的值

在数据分析中,从前一行减去一个值是很常见的任务,但在处理分组数据时可能会带来挑战。MySQL 提供了一种通用的方法来解决这种情况。

为了计算每个 SN 的连续行之间的能耗差,我们使用 MySQL 的系统变量(@lastSN 和 @lastValue)以及对数据进行单次传递的查询:

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) SQLVars
ORDER BY
  EL.SN, EL.Date;
登录后复制

查询的工作原理如下:

  1. 声明 MySQL 变量 @lastSN 和 @lastValue 来跟踪前一个 SN 和 Value。
  2. 对于 EnergyLog 表中的每一行,将当前 SN 与 @lastSN 进行比较。
  3. 如果 SN 匹配,则使用 IF() 计算能耗差。否则,将 Consumption 设置为 0。
  4. 比较之后,使用当前行的值更新 @lastSN 和 @lastValue。
  5. 按 SN 和 Date 排序结果,以确保正确的能耗计算。

通过使用 MySQL 变量,我们实现了一种简洁高效的解决方案,用于在分组查询中根据前一个值计算能耗。

以上是如何在分组 MySQL 查询中减去前一行的值?的详细内容。更多信息请关注PHP中文网其他相关文章!

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