0

我有一张水读数表。我需要知道基于 2 个给定日期每个属性消耗了多少。

下面是我的数据的样子。

水读数

如何创建一个 mysql 查询

  1. 询问什么日期(比如 2021 年 8 月 16 日和 2021 年 8 月 12 日之间)来获得读数的差异
  2. 计算差异
  3. 在“8/12 和 8/16 之间消耗”的新列中输入结果。

我对 mysql 很陌生,非常感谢您的帮助。

谢谢

4

1 回答 1

0

在此查询中,您可以将开始和结束日期替换为应用程序变量或存储过程参数。

在这里找到我的分步查询-> 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;
于 2021-08-30T06:06:07.600 回答