-1
使用SQL Server 2008 R2。每小时24小时摘要百分比
我试图得到每小时分解24小时的时间百分比。
如果列AlertID是1,那么系统启动。如果AlertID是任何其他数字,那么它被视为关闭。
这是我目前没有工作,并有一个糟糕的性能结果,但让我们只是让它工作第一。正常运行时间列始终为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
示例表:(有其他数据,但我不关心它此实例)
uniqueidentifier CommandID
smallint AlertID
datetime RecordedDTTM
AlertID可以是1-5。 1表示已启动,其他任何数字都应被视为关闭。
不知道为什么有人检举这个封闭。我错过了什么? – Tsukasa
这是一个投票dba.stackexchange.com,所以不是真正的密切投票。性能调优专家居住在那里,所以这样做是有道理的。 –
架构和示例数据将使这个问题更容易解决。 – Jacobm001