首页 > 解决方案 > 平均函数没有返回正确的值

问题描述

我希望这个查询能给我最新的每日活跃用户的平均价值,并按月(从 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

标签: mysqlsql

解决方案


好的,谢谢你的帮助。问题是在子查询中我按月而不是按天提取信息。所以我应该在那里按天提取信息,并在外部查询中按月分组。这终于奏效了:

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)

推荐阅读