我正在研究一些趋势/分析工具,并且想要查询事件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.有人告诉我,我可以通过连接完成此操作,但我似乎是在获取语法时遇到一些麻烦。
答案 0 :(得分: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