在 mysql 中的 GROUP BY 单个查询中获取 AVG



我需要帮助来处理一些查询。

所以我有这个查询。

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"

最新更新