2

テーブルに次の(例)データがあります

値、日付、デバイス

このデータを使用して、単純な SLA 計算を行います。つまり、営業時間中にデータが特定のしきい値を下回った回数です。

現在、次のような次の2つのクエリを実行します

select count(*), DATE(times) from SLA where device='some-dev' and DATE(times) between '2013-05-01' and '2013-05-31' and TIME(times) between '06:00:00' and '18:00:00' and value <150 group by DATE(times);

select count(*), DATE(times) from SLA where device='some-dev' and DATE(times) between '2013-05-01' and '2013-05-31' and TIME(times) between '06:00:00' and '18:00:00' group by DATE(times);

したがって、2 つのクエリ、1 つは値 < 数値なし、もう 1 つはあります。

いくつか質問があります。これらの両方を 1 つのクエリにまとめて、合計データ ポイント数としきい値未満のデータ ポイント数を確認する方法はありますか? 基本的に 3 つの列を返します。1 つはカウント、もう 1 つはカウントがしきい値を下回り、日付です。

それを超えて、データを返すときに週末を無視するように mysql に指示する簡単な方法はありますか?

ありがとう、

4

5 に答える 5

3

UNION演算子を使用します。

更新されたクエリは次のようになります。

(select count(*), DATE(times) from SLA where device='some-dev' and DATE(times) between '2013-05-01' and '2013-05-31' and TIME(times) between '06:00:00' and '18:00:00' and value <150 group by DATE(times))
UNION
(select count(*), DATE(times) from SLA where device='some-dev' and DATE(times) between '2013-05-01' and '2013-05-31' and TIME(times) between '06:00:00' and '18:00:00' group by DATE(times));
于 2013-06-13T15:59:37.727 に答える
1
select count(*), DATE(time) from SLA where (device='some-dev' and DATE(time) between '2013-05-01' and '2013-05-31' and TIME(times) between '06:00:00' and '18:00:00' and value <150 group by DATE(time)) or (device='some-dev' and DATE(times) between '2013-05-01' and '2013-05-31' and TIME(time) between '06:00:00' and '18:00:00' group by DATE(time));
于 2017-10-29T11:39:39.647 に答える
0

どうですか:

select count(*), DATE(times) from SLA 
where (device='some-dev' and DATE(times) between '2013-05-01' and '2013-05-31' and TIME(times) between '06:00:00' and '18:00:00' and value <150 group by DATE(times))
or (device='some-dev' and DATE(times) between '2013-05-01' and '2013-05-31' and TIME(times) between '06:00:00' and '18:00:00' group by DATE(times));
于 2013-06-13T16:00:40.743 に答える