按列分组时,MYSQL COUNT结果和AVG结果
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了按列分组时,MYSQL COUNT结果和AVG结果,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1705字,纯文字阅读大概需要3分钟。
内容图文
![按列分组时,MYSQL COUNT结果和AVG结果](/upload/InfoBanner/zyjiaocheng/883/b4b807af2d5f446b9886a18621fe406c.jpg)
我试图选择过去30天每天的平均完成次数,然后取其平均值.这是我的Rundown表的示例
RundownID | WorkOrderID | ForemanID | Completion | RundownDate
1 | 1 | 1 | 1 | 2017-10-27
2 | 2 | 1 | 1 | 2017-10-26
3 | 3 | 1 | 1 | 2017-10-20
4 | 4 | 1 | 1 | 2017-10-27
5 | 5 | 2 | 1 | 2017-10-27
6 | 6 | 2 | 1 | 2017-10-27
7 | 7 | 3 | 1 | 2017-10-25
8 | 8 | 2 | 0 | 2017-10-20
我正在寻找的结果是
ForemanID | ForemanAvg
1 | 4
2 | 2
3 | 1
它应采用过去30天内的完成行总数,并平均每个唯一ForemanID每天的总数.然后平均每天的总和,以得出过去30天的平均值
我知道我已经接近了,但是我似乎无法正确配置它.这是我走多远
SELECT
ForemanID,
COUNT(RundownDate) AS ForemanAvg
FROM Rundown
WHERE RundownDate > (DATE_SUB(CURDATE(), INTERVAL '30' Day))
AND Completion = 1
GROUP BY ForemanID
结果
ForemanID | ForemanAvg
23 | 70
24 | 100
25 | 100
26 | 76
27 | 109
29 | 11
编辑:
我越来越近了.使用以下查询,我得到了想要的结果,但是由于某种原因,它只给我一个ForemanID
SELECT
a.ForemanID,
AVG(a.ForemanAvg)
FROM (SELECT
RundownDate,
ForemanID,
COUNT(RundownDate) AS ForemanAvg
FROM Rundown
WHERE RundownDate > (DATE_SUB(CURDATE(), INTERVAL '30' Day))
AND Completion = 1
GROUP BY ForemanID, RundownDate ) AS a
解决方法:
以下查询应该工作:
SELECT
ForemanID,
count(*)/COUNT(distinct RundownDate) AS ForemanAvg
FROM Rundown
WHERE RundownDate > (DATE_SUB(CURDATE(), INTERVAL '30' Day))
AND Completion = 1
GROUP BY ForemanID;
希望能帮助到你!
内容总结
以上是互联网集市为您收集整理的按列分组时,MYSQL COUNT结果和AVG结果全部内容,希望文章能够帮你解决按列分组时,MYSQL COUNT结果和AVG结果所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。