0

日時と測定値の記録を含むデータベースがあります。

私は2つの別々のクエリを書いています.1つは前月の特定の時間帯の間のすべての日次レコードの合計数を返し、同じクエリですが、測定値がしきい値を下回った場合のみの数を返します.

次に、各日のしきい値カウントを合計カウントで手動で割ると、% アップタイムまたは SLA を得ることができます。

2 つの質問があります
。1) これら 2 つのクエリを 1 つのクエリに結合できますか。 #1 への回答を見つけました。以下を参照してください
。2) 先に進んで、クエリで計算を行うことはできますか。返されるのは、毎日のリスト、上のカウント、下のカウント、および上の % またはしきい値を下回っています...

サンプル データとクエリを以下に示します。
TableA
ホスト名、date_time、値

週末を除く、前月からの日数を返すサンプル クエリ。

SELECT
  count(*),
  DATE(date_time),
  SUM(
    CASE WHEN rssi_val < 100
      THEN 1
      ELSE 0
    END
  )
FROM TableA
WHERE hostname = 'hostA'
  AND DATE(date_time) BETWEEN '2013-07-01' AND '2013-07-31'
  AND TIME(date_time) BETWEEN '06:00:00' AND '18:00:00'
  AND DAYOFWEEK(date_time) NOT IN (1, 7)
GROUP BY DATE(date_time);

だから今、アップタイム/ダウンタイムの割合を示す4番目の列を追加する方法を知りたいだけです.

4

1 に答える 1

0

これを試しましたか?

select count(*), 
       DATE(date_time), 
       SUM(CASE WHEN rssi_val<100 THEN 1 ELSE 0 END), 
       SUM(CASE WHEN rssi_val<100 THEN 1 ELSE 0 END)/count(*) as percentage
from TableA 
where hostname='hostA' 
and DATE(date_time) between '2013-07-01' and '2013-07-31' 
and TIME(date_time) between '06:00:00' and '18:00:00' 
and DAYOFWEEK(date_time) NOT IN (1,7) 
group by DATE(date_time);
于 2013-08-31T02:07:46.223 に答える