[英]MySQL Aggregate function in other aggregate function
我有一张有帖子的桌子。 喜欢( id
int, date
datetime)。 我怎样才能通过一个 sql 请求每月 select 平均帖子数?
谢谢!
这应该为你做:
select month, avg(posts_per_day)
from (select day(date), month(date) as month, count(*) as posts_per_day
from posts group by 1,2) x
group by 1
说明:因为您正在对聚合进行聚合,所以无法绕过对查询进行查询:
您可以像这样获得每月的帖子数:
SELECT COUNT(*) AS num_posts_per_month FROM table GROUP BY MONTH(date);
现在我们需要一个月的天数:
SELECT COUNT(*) / DATEDIFF(MAKEDATE(YEAR(date), MONTH(date)) + INTERVAL 1 MONTH, MAKEDATE(YEAR(date), MONTH(date))) AS avg_over_month
FROM table GROUP BY MONTH(date);
这将获得帖子日历月内每天的平均帖子数。 也就是说,当月的平均值将继续上升,直到月底。 如果您想要当前月份的实际平均值,则必须输入条件以获得真实的经过天数。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.