繁体   English   中英

MySQL 聚合 function 其他聚合 function

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM