【发布时间】:2021-06-03 16:51:57
【问题描述】:
有一个架构(Perf_Stat)在一段时间内填充了性能统计信息:
Event Event_Ts Event_Stat
------------------------------------------
Entry 2021-02-15 19:30:10 Success
Update 2021-02-15 19:35:10 Success
Delete 2021-02-15 19:23:10 Failure
Update 2021-02-15 19:68:10 Success
Delete 2021-02-15 18:30:10 Failure
Update 2021-02-15 18:59:10 Success
and so no.....
每当执行时,我需要每隔一小时从该表中获取失败 Update 事件的百分比计数。喜欢
在下一次运行时,它应该给我的结果是:
**23%** (Which denotes 23% of the total **Update** events that failed in the last hour)
我尝试过但失败的是:
SELECT COUNT
(
(
(SELECT COUNT(*) FROM Perf_Stat WHERE Event = 'Update' AND DATEDIFF(hour, Event_Ts, GETDATE() < 1) AND Event_Stat = 'Failure') * 100
) /
(
SELECT COUNT(*) FROM Perf_Stat WHERE Event = 'Update' AND DATEDIFF(hour, Event_Ts, GETDATE() < 1)
)
) from Perf_Stat;
但是,我收到聚合函数错误。请建议如何获得所需的结果。
【问题讨论】:
-
您只需要最后一小时还是要按小时在整个表中汇总?并且是一个小时的开始和结束时间:1:00, 2:00,还是正好在一小时前,比如 1:07, 2:07
-
正好是最后一小时。
-
那么戈登的第二个答案对你有用
标签: sql sql-server sql-server-2008