Verwenden von SQL Server 2008 R2.Prozentuale Zusammenfassung pro Stunde für 24 Stunden
Ich versuche, eine prozentuale Up-Zeit für einen 24-Stunden-Zeitraum pro Stunde zu erhalten.
Wenn die Spalte AlertID 1 ist, ist das System aktiv. Wenn AlertID eine andere Nummer ist, wird sie als inaktiv betrachtet.
Hier ist, was ich derzeit nicht funktioniert und hat ein schlechtes Ergebnis, aber lassen Sie uns es zuerst machen. Die UpTime Spalte ist immer 0.
SELECT a.dayhour,
((SELECT Count(*)
FROM commandhistory
WHERE commandid = '4263745C-5603-4E3D-AFB2-CA0E27969D0B'
AND alertid = 1
AND Datepart(hour, recordeddttm) = a.dayhour * 100)/(SELECT
Count(*) FROM commandhistory
WHERE commandid = '4263745C-5603-4E3D-AFB2-CA0E27969D0B'
AND Datepart(hour, recordeddttm) = a.dayhour)) AS UpTime
FROM (SELECT 0 AS DayHour UNION SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION SELECT 9 UNION SELECT 10 UNION SELECT 11 UNION SELECT 12 UNION SELECT 13 UNION SELECT 14 UNION SELECT 15 UNION SELECT 16 UNION SELECT 17 UNION SELECT 18 UNION SELECT 19 UNION SELECT 20 UNION SELECT 21 UNION SELECT 22 UNION SELECT 23) a
LEFT JOIN commandhistory h
ON a.dayhour = Datepart(hour, recordeddttm)
GROUP BY a.dayhour
ORDER BY a.dayhour
Beispiel Tabelle: (es andere Daten, aber ich für diese Instanz darüber do not care)
uniqueidentifier CommandID
smallint AlertID
datetime RecordedDTTM
alertId 1-5 sein kann. 1 bedeutet, dass es oben ist, jede andere Nummer sollte als down behandelt werden.
nicht sicher, warum jemand diese als geschlossene Liste steht. Habe ich etwas verpasst? – Tsukasa
Es ist eine Bewegung Abstimmung zu dba.stackexchange.com, also nicht wirklich eine enge Abstimmung. Die Performance-Tuning-Experten leben dort, also macht es Sinn. –
Schema und Beispieldaten würden dies viel einfacher zu beheben. – Jacobm001