mysql - 在 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
如您所见,我试图根据他们的“Schedstatus”有多少来获得每个“EventCode”的平均值,并将其除以“SchedStatus”的总数。
所以我想要的结果是这样的。
EventCode SchedStatus Percentage
Station1 3 0.0492
Station2 1 "Average Here"
Station3 1 "Average Here"
但是由于需要特定 EventCode 值的 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"
推荐阅读
- java - 即使变量更新,whlie 循环也不会退出
- python-3.x - 如何找到VGG16预测的父类?
- html - ngx-bootstrap bs-sortable 在将菜单项拖动到可排序部分时显示先前拖动的项目
- visual-studio-code - VS Code - 在目录中的所有仅 c++ (.cpp) 和标头 (.h) 文件中搜索文本
- elasticsearch - 我可以在 Elasticsearch 7.x 中从 get geo_point 存储 geo_shape 吗?
- javascript - 如何提取页面的实际href,在检查该页面时显示为#
- command-line - 使用命令行或 WMI 查询(无 powershell)获取分配给 AD 中安全组的打印机列表
- php - 如何在首字母日期中将日期拆分为间隔
- javascript - 无法更新反应状态
- reactjs - 如何在反应应用程序中按属性选择嵌套层次结构中的所有对象?