我有以下查询:
SELECT *, COUNT(id) AS number_of_orders
FROM orders
WHERE MONTH(date) = 5
GROUP BY item_number, MONTH(date), YEAR(date);
我得到以下结果:
id | item_number | date | number_of_orders
1 | 4 | 2022-05-15 | 1
2 | 43 | 2021-05-15 | 2
3 | 43 | 2022-05-15 | 2
4 | 51 | 2021-05-15 | 3
5 | 51 | 2022-05-15 | 3
6 | 51 | 2020-05-15 | 3
我需要获取每个特定月份每个商品的平均订单数。在本例中为五月 (05)。
5 月份每个项目 #4 的平均值为 1
5 月份每个项目 #43 的平均值为 2
5 月份每个项目 #51 的平均值为 1
原始数据和上面基本一样,不知道是否需要做COUNT
第一步:
id | item_number | date |
1 | 4 | 2022-05-15 |
2 | 43 | 2021-05-15 |
3 | 43 | 2022-05-15 |
4 | 51 | 2021-05-15 |
5 | 51 | 2022-05-15 |
6 | 51 | 2019-08-15 |
您始终可以将第一个查询用作子查询并进一步聚合其结果
SELECT y, m, item_number, AVG(number_of_orders) as avg_number_of_orders
FROM (
SELECT YEAR(date) y, MONTH(date) m, item_number, COUNT(id) AS number_of_orders
FROM orders
GROUP BY YEAR(date), MONTH(date), item_number
)
GROUP BY y, m, item_number
编辑以使用正确的 SQL 分组
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)