0
        SELECT TOP 92 PERCENT 
        Convert(DateTime,Floor(Cast((DateTime) as Float)*24)/24,0) AS SummaryDateTime,
        MIN(APM_ApplicationAvailability.PercentAvailability) AS MIN_of_ApplicationAvailability,
        Nodes.Caption AS NodeName 

        FROM 
        (Nodes INNER JOIN APM_AlertsAndReportsData ON (Nodes.NodeID = APM_AlertsAndReportsData.NodeId))  INNER JOIN APM_ApplicationAvailability ON (APM_AlertsAndReportsData.ApplicationId = APM_ApplicationAvailability.ApplicationID)


        WHERE 
        ( DateTime BETWEEN 40907 AND 41205 )
         AND  
        (
          (APM_AlertsAndReportsData.ApplicationName LIKE '%HTTP%') AND 
          (Nodes.Caption = 'www.example.com')
        )
GROUP BY Convert(DateTime,Floor(Cast((DateTime) as Float)*24)/24,0), 
Nodes.Caption


ORDER BY SummaryDateTime ASC

上記のクエリは、画像として添付された次の結果を示しています。ここに画像の説明を入力してください

データを気にしないので、すべての0.00%結果を除外するクエリを作成して、データのみが表示されるようにします。データをフィルタリングする方法がわかりません。0.00%100%

4

1 に答える 1

2

それはあなたの完全な質問ですか?MINアグリゲート( )と非アグリゲート()が混在していますDatetime
どこかにGROUPBYがあると仮定しますが、いずれの場合でも、簡単なアプローチはそれをサブクエリすることです。

SELECT *
FROM (
    SELECT TOP 92 PERCENT
        Convert(DateTime,Floor(Cast((DateTime) as Float)*24)/24,0) AS SummaryDateTime,
        MIN(APM_ApplicationAvailability.PercentAvailability) AS MIN_of_ApplicationAvailability,
        Nodes.Caption AS NodeName 
    FROM Nodes
    INNER JOIN APM_AlertsAndReportsData
            ON Nodes.NodeID = APM_AlertsAndReportsData.NodeId
    INNER JOIN APM_ApplicationAvailability
            ON APM_AlertsAndReportsData.ApplicationId = APM_ApplicationAvailability.ApplicationID
    WHERE DateTime BETWEEN 40907 AND 41205
      AND APM_AlertsAndReportsData.ApplicationName LIKE '%HTTP%'
      AND Nodes.Caption = 'www.example.com'
    -- GROUP BY..
) X
WHERE MIN_of_ApplicationAvailability = 0.0

通常、集計クエリの場合、次のようなHAVING句を使用することもできます。

    SELECT TOP 92 PERCENT
        Convert(DateTime,Floor(Cast((DateTime) as Float)*24)/24,0) AS SummaryDateTime,
        MIN(APM_ApplicationAvailability.PercentAvailability) AS MIN_of_ApplicationAvailability,
        Nodes.Caption AS NodeName 
    FROM Nodes
    INNER JOIN APM_AlertsAndReportsData
            ON Nodes.NodeID = APM_AlertsAndReportsData.NodeId
    INNER JOIN APM_ApplicationAvailability
            ON APM_AlertsAndReportsData.ApplicationId = APM_ApplicationAvailability.ApplicationID
    WHERE DateTime BETWEEN 40907 AND 41205
      AND APM_AlertsAndReportsData.ApplicationName LIKE '%HTTP%'
      AND Nodes.Caption = 'www.example.com'
    GROUP BY DateTime, Nodes.Caption
    HAVING MIN(APM_ApplicationAvailability.PercentAvailability) = 0.0
于 2012-10-24T20:24:17.783 に答える