我有一张水读数表。我需要知道基于 2 个给定日期每个属性消耗了多少。
下面是我的数据的样子。
如何创建一个 mysql 查询
- 询问什么日期(比如 2021 年 8 月 16 日和 2021 年 8 月 12 日之间)来获得读数的差异
- 计算差异
- 在“8/12 和 8/16 之间消耗”的新列中输入结果。
我对 mysql 很陌生,非常感谢您的帮助。
谢谢
我有一张水读数表。我需要知道基于 2 个给定日期每个属性消耗了多少。
下面是我的数据的样子。
如何创建一个 mysql 查询
我对 mysql 很陌生,非常感谢您的帮助。
谢谢
在此查询中,您可以将开始和结束日期替换为应用程序变量或存储过程参数。
在这里找到我的分步查询-> db<>fiddle
尝试这个 -
set @v_start_date = '2021-08-12';
set @v_end_date = '2021-08-16';
SELECT
wr_start_table.Unit_No,
wr_start_table.Date,
wr_start_table.Reading,
wr_end_table.Date,
wr_end_table.Reading,
wr_end_table.Reading - wr_start_table.Reading AS difference_in_reading
FROM
(
SELECT
wr_start_unit.*
FROM
water_reading wr_start_unit
INNER JOIN (
SELECT
wr.Unit_No,
min(wr.Date) AS start_date
FROM
water_reading wr
WHERE
wr.Date >= @v_start_date
GROUP BY
wr.Unit_No) AS wr_start ON
wr_start.Unit_No = wr_start_unit.Unit_No
AND wr_start.start_date = wr_start_unit.Date) AS wr_start_table,
(
SELECT
wr_end_unit.*
FROM
water_reading wr_end_unit
INNER JOIN (
SELECT
wr.Unit_No,
max(wr.Date) AS end_date
FROM
water_reading wr
WHERE
wr.Date <= @v_end_date
GROUP BY
wr.Unit_No) AS wr_end ON
wr_end.Unit_No = wr_end_unit.Unit_No
AND wr_end.end_date = wr_end_unit.Date) AS wr_end_table
WHERE
wr_start_table.Unit_No = wr_end_table.Unit_No;