我需要帮助来处理一些查询。
所以我有这个查询。
SELECT EventCode, COUNT(SchedStatus) as 'SchedStatus'
FROM itemschedule WHERE SchedStatus = 26 AND ActualTime <= SchedDateTime
GROUP BY EventCode ORDER BY COUNT(SchedStatus)
结果是
EventCode SchedStatus
Station1 3
Station2 1
Station3 1
然后我有这个查询
SELECT EventCode, COUNT(SchedStatus) as 'SchedStatus', COUNT(SchedStatus) / (SELECT COUNT(*)
FROM itemschedule WHERE EventCode = "Station1") as 'Percentage'
FROM itemschedule WHERE SchedStatus = 26 AND ActualTime <= SchedDateTime AND EventCode = "Station1"
结果是
EventCode SchedStatus Percentage
Station1 3 0.0492
如您所见,我试图根据每个"事件代码"的"调度状态"数量来获取其平均值,并将其除以"调度状态"的总数。
所以我想要的结果是这样的。
EventCode SchedStatus Percentage
Station1 3 0.0492
Station2 1 "Average Here"
Station3 1 "Average Here"
但是我无法使其工作,因为 where 子句需要特定的 EventCode 值。 有没有办法在单个查询中根据"事件代码"值获取所有平均值?
感谢所有可以提供帮助的人。
我找到了我的解决方案。
希望这能帮助与我有相同情况的人。
SELECT d1.EventCode, COUNT(d1.SchedStatus) as 'SchedStatus',
COUNT(d1.SchedStatus) / (SELECT COUNT(d2.SchedStatus) from itemschedule d2 WHERE d2.EventCode = d1.EventCode) as "Percentage"
FROM itemschedule d1 WHERE d1.SchedStatus = 26 AND d1.ActualTime <= d1.SchedDateTime
GROUP BY d1.EventCode ORDER BY COUNT(d1.SchedStatus) DESC
如您所见。我在要查询的表中放置一个别名,在子查询中放置另一个别名,以获取具有相同 EventCode 的数据行。
COUNT(d1.SchedStatus) / (SELECT COUNT(d2.SchedStatus) from itemschedule d2 WHERE d2.EventCode = d1.EventCode) as "Percentage"