MySQL取两个字段之间的差异

Posted

技术标签:

【中文标题】MySQL取两个字段之间的差异【英文标题】:MySQL take difference between two fields 【发布时间】:2020-06-27 05:32:23 【问题描述】:

我有一个从中获取数据的查询。

SELECT n.`name`,n.`customer_id`,m.`msn`, m.kwh FROM mdc_node n
INNER JOIN `mdc_meters_data` m ON n.`customer_id` = m.`cust_id`
WHERE n.`lft` = 3 AND n.`icon` NOT IN ('folder')
AND m.`data_date_time` BETWEEN NOW() - INTERVAL 30 DAY AND NOW()

输出

现在我要做的是减去kwh 的值,例如kwh[2] - kwh[1]kwh[3] - kwh[2]kwh[4] - kwh[3].....kwh[n+1] - kwh[n]

任何帮助将不胜感激。

【问题讨论】:

【参考方案1】:

LAG()窗口函数可以用来解决这个问题,如下图,

SELECT n.`name`,n.`customer_id`,m.`msn`, m.kwh,
       m.kwh - LAG(m.kwh) OVER(PARTITION BY n.`customer_id` ORDER BY m.`data_date_time`)
FROM mdc_node n
INNER JOIN `mdc_meters_data` m ON n.`customer_id` = m.`cust_id`
WHERE n.`lft` = 3 AND n.`icon` NOT IN ('folder')
AND m.`data_date_time` BETWEEN NOW() - INTERVAL 30 DAY AND NOW()

【讨论】:

我又发了一个question你能看看吗?

以上是关于MySQL取两个字段之间的差异的主要内容,如果未能解决你的问题,请参考以下文章

MySQL中日期之间的月份差异

使用 HQL 计算两个字段的差异之间的范围

比较与特定字段有关的两个表之间的差异时如何正确连接

SQL Server 中是不是有一种方法可以显示两个具有相同布局并共享一些公共数据的表之间的字段差异

mysql比较两个表中的某个字段大小,并取最大值

MySQL--如何快速对比数据