2017-05-03 8 views
3

次のデータをクエリしようとしています。各期間について、PrctBusy列からIは、MAX、MIN、AVG、総カウント数と60データ値とそれ以上のカウント回数の合計を与えるSQLクエリ

Array   TimeStamp  Category Instance PrctBusy QueUtil 
000198701258 2016-07-01 00:00 FE_DIR FA-1E 59  0 
000198701258 2016-07-01 00:00 FE_DIR FA-1F 9  0 
000198701258 2016-07-01 00:00 FE_DIR FA-1G 9  0 
000198701258 2016-07-01 00:00 FE_DIR FA-1H 9  0 
000198701258 2016-07-01 00:00 FE_DIR FA-2E 64  0 
000198701258 2016-07-01 00:00 FE_DIR FA-2F 10  0 
000198701258 2016-07-01 00:00 FE_DIR FA-2G 9  0 
000198701258 2016-07-01 00:00 FE_DIR FA-2H 10  0 
000198701258 2016-07-01 00:00 FE_DIR FA-3E 64  0 
000198701258 2016-07-01 00:00 FE_DIR FA-3F 9  0 
000198701258 2016-07-01 00:00 FE_DIR FA-3G 9  0 
000198701258 2016-07-01 00:00 FE_DIR FA-3H 9  0 
000198701258 2016-07-01 00:00 FE_DIR FA-4E 64  0 
000198701258 2016-07-01 00:00 FE_DIR FA-4F 10  0 
000198701258 2016-07-01 00:00 FE_DIR FA-4G 9  0 
000198701258 2016-07-01 00:00 FE_DIR FA-4H 9  0 
000198701258 2016-07-01 00:05 FE_DIR FA-1E 62  0 
000198701258 2016-07-01 00:05 FE_DIR FA-1F 12  0 
000198701258 2016-07-01 00:05 FE_DIR FA-1G 12  0 
000198701258 2016-07-01 00:05 FE_DIR FA-1H 12  0 
000198701258 2016-07-01 00:05 FE_DIR FA-2E 66  0 
000198701258 2016-07-01 00:05 FE_DIR FA-2F 13  0 
000198701258 2016-07-01 00:05 FE_DIR FA-2G 12  0 
000198701258 2016-07-01 00:05 FE_DIR FA-2H 12  0 
000198701258 2016-07-01 00:05 FE_DIR FA-3E 66  0 
000198701258 2016-07-01 00:05 FE_DIR FA-3F 12  0 
000198701258 2016-07-01 00:05 FE_DIR FA-3G 12  0 
000198701258 2016-07-01 00:05 FE_DIR FA-3H 12  0 
000198701258 2016-07-01 00:05 FE_DIR FA-4E 66  0 
000198701258 2016-07-01 00:05 FE_DIR FA-4F 13  0 
000198701258 2016-07-01 00:05 FE_DIR FA-4G 13  0 
000198701258 2016-07-01 00:05 FE_DIR FA-4H 11  0 
000198701258 2016-07-01 00:10 FE_DIR FA-1E 52  0 
000198701258 2016-07-01 00:10 FE_DIR FA-1F 12  0 
000198701258 2016-07-01 00:10 FE_DIR FA-1G 12  0 
000198701258 2016-07-01 00:10 FE_DIR FA-1H 12  0 
000198701258 2016-07-01 00:10 FE_DIR FA-2E 56  0 
000198701258 2016-07-01 00:10 FE_DIR FA-2F 13  0 
000198701258 2016-07-01 00:10 FE_DIR FA-2G 12  0 
000198701258 2016-07-01 00:10 FE_DIR FA-2H 12  0 
000198701258 2016-07-01 00:10 FE_DIR FA-3E 56  0 
000198701258 2016-07-01 00:10 FE_DIR FA-3F 12  0 
000198701258 2016-07-01 00:10 FE_DIR FA-3G 12  0 
000198701258 2016-07-01 00:10 FE_DIR FA-3H 12  0 
000198701258 2016-07-01 00:10 FE_DIR FA-4E 56  0 
000198701258 2016-07-01 00:10 FE_DIR FA-4F 13  0 
000198701258 2016-07-01 00:10 FE_DIR FA-4G 13  0 
000198701258 2016-07-01 00:10 FE_DIR FA-4H 11  0 

が、私はいくつかの異なるクエリを試してみました>倍の数、クローゼットがにあるものを希望しています私が欲しいのは:

残念なことに、結果はかなり正確ではなく、各タイムスタンプの代わりに合計数が60を超えています。私が必要

TimeStamp  maxPrctBusy minPrctBusy avgPrctBusy numPrctBusy above60 
2016-07-01 00:00 64  9   22   16   8494 
2016-07-01 00:05 66  11   25   16   8494 
2016-07-01 00:10 56  11   23   16   8494 

何:

TimeStamp  maxPrctBusy minPrctBusy avgPrctBusy numPrctBusy above60 
2016-07-01 00:00 64  9   22   16   3 
2016-07-01 00:05 66  11   25   16   4 
2016-07-01 00:10 56  11   23   16   0 

私は労働組合が、私は必要なものであることと、60を超える数を数えるかもしれないと思うが、私はどのように考え出したていない私は取得しています何

結果行の数を同じにします。任意の提案をいただければ幸いです。

答えて

1
SELECT TimeStamp, 
    max(prctbusy) AS maxPrctBusy, 
    min(prctbusy) AS minPrctBusy, 
    AVG(prctbusy) AS avgPrctBusy, 
    count(prctbusy) AS numPrctBusy, 
    sum(case when prctbusy > 60 then 1 else 0 end) AS above60 
FROM VMAXPortUtil 
WHERE array like '%1258%' and Category like '%FE_DIR%' 
GROUP BY TimeStamp 
Order by TimeStamp 

これは、numPrctBusyを残すことを前提にしています。

集計関数内にグループ以外のフィールドを追加して、比較チェックを行うことができます。

関連する問題