UNION 3相同的表和SUM 4列

时间:2019-04-12 15:46:58

标签: mysql

我的数据库中有3个表,它们的结构相同。...

ID |时间戳记|年份月|日小时|水|电气|天然气|太阳能发电

水,电,天然气和太阳能发电的每一行数据都相同。那四列是随机数。数据由每小时由cronjob触发的PHP脚本生成。现在我有按小时显示的数据可以追溯到2018年1月1日。因此,现在每个表中只有11,000条记录。我已经用sql查询完成了一些任务,但绝不是专家,而且我现在尝试创建的任务有点困难。

我发布的查询从最近10个小时的所有3个表中获取行,并对水,电,天然气和太阳能的总数求和。现在,这只允许我在1行中显示结果。我需要做的是显示那10个小时,就像您在屏幕截图中看到的那样。

我的代码:https://www.screencast.com/t/SHTM7ERh

如何显示它,但具有SUM功能:https://www.screencast.com/t/aH07ZUvyG

SELECT
  timestamp AS Timestamp,
  SUM (water) AS 'Water Total',
  SUM (electric) AS 'Electric Total',
  SUM (naturalgas) AS 'N. Gas Total',
  SUM (solargeneration) AS 'Solar Total'
FROM
  (
    SELECT
      timestamp,
      water,
      electric,
      naturalgas,
      solargeneration
    FROM
      wpdatatable_24
    UNION
    SELECT
      timestamp,
      water,
      electric,
      naturalgas,
      solargeneration
    FROM
      wpdatatable_23_1 
    UNION
    SELECT
      timestamp,
      water,
      electric,
      naturalgas,
      solargeneration
    FROM
      wpdatatable_23_1_1)  t
    WHERE   timestamp >= NOW() - INTERVAL 10 HOUR;

1 个答案:

答案 0 :(得分:0)

您必须将GROUP BY HOUR(时间戳)分组。 您还应该决定编写SELECT min(timestamp)AS时间戳,而不是SELECT时间戳AS时间戳,