1

私はいくつかの傾向/分析ツールに取り組んでおり、グラファイトのデータポイントとしてメトリクスを送信できるように、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 に答える