1

我正在开发一些趋势/分析工具,并想查询事件 MySQL 数据库以获取每小时事件指标,以便我可以将指标作为石墨中的数据点发送出去。因为有些事件将在状态表中,而其他事件在历史表中,我想出了我正在寻找的基本查询。请记住,我绝不是 DBA,我想学习如何从两个表中获取总计数。这是我到目前为止所拥有的:

mysql> SELECT COUNT(*) FROM events.history WHERE firstTime > UNIX_TIMESTAMP(DATE_SUB(NOW(), INTERVAL 1 HOUR)) AND (severity='5' OR severity='3')
-> UNION
-> SELECT COUNT(*) FROM events.status WHERE firstTime > UNIX_TIMESTAMP(DATE_SUB(NOW(), INTERVAL 1 HOUR)) AND (severity='5' OR severity='3')
-> ;
+----------+
| COUNT(*) |
+----------+
|       27 | 
|      267 | 
+----------+
2 rows in set (0.00 sec)

mysql>

我希望修改 SQL 以返回单行,并添加两个表的计数,因此在示例中为 294。有人告诉我,我可以通过连接来完成此操作,但我似乎遇到了一些麻烦获取拨入的语法。

4

1 回答 1

0

将联合放在子查询中,然后使用SUM()将它们添加在一起。

SELECT SUM(c) total
FROM (SELECT COUNT(*) c FROM events.history WHERE firstTime > UNIX_TIMESTAMP(DATE_SUB(NOW(), INTERVAL 1 HOUR)) AND (severity='5' OR severity='3')
      UNION
      SELECT COUNT(*) c FROM events.status WHERE firstTime > UNIX_TIMESTAMP(DATE_SUB(NOW(), INTERVAL 1 HOUR)) AND (severity='5' OR severity='3')
     ) u
于 2013-09-19T21:01:33.637 回答