mysql - 平均函数没有返回正确的值
问题描述
我希望这个查询能给我最新的每日活跃用户的平均价值,并按月(从 10 月到 12 月)分组。但结果应该是 128K,但结果却是 164K。为什么avg不起作用?平均值应该是值的总和/到今天为止的当月天数。
SELECT sq.month_year AS 'month_year', AVG(number)
FROM
(
SELECT CONCAT(MONTHNAME(date), "-", YEAR(DATE)) AS 'month_year', count(distinct id_user) AS number
FROM table1
WHERE date between '2020-10-01' and '2020-12-31 23:59:59'
GROUP BY EXTRACT(year_month FROM date)
) sq
GROUP BY 1
解决方案
好的,谢谢你的帮助。问题是在子查询中我按月而不是按天提取信息。所以我应该在那里按天提取信息,并在外部查询中按月分组。这终于奏效了:
SELECT sq.day_month, AVG(number)
FROM (SELECT date(date) AS day_month,
count(distinct id_user) AS number
FROM table_1
WHERE date >= '2020-10-01' AND
date < '2021-01-01'
GROUP BY 1
) sq
GROUP BY EXTRACT(year_month FROM day_month)
推荐阅读
- php - 显示客户在 Woocommerce 中未发货的总支出
- javascript - 如何在javascript中获取响应标头值?
- r - 最大似然“mle”提供 NaN 标准错误
- javascript - 如何使用 npm 更新特定的子包版本
- r - 根据另一个矩阵的列对矩阵行名进行排序
- javascript - 如果浏览器控制台出现类型错误,则刷新页面
- php - PHP - 根据第二个数组按子数组值对数组进行排序
- xcode - 文件/文件夹的 Xcode 模板,不是项目
- javascript - slimScroll 和 twitter 小部件在鼠标滚轮上不起作用
- sql - 通过查询将组的长尾聚合成“其他”