一尘不染

如何在MySQL中组合聚合函数?

mysql

我只是在学习MySQL-是否有组合(或嵌套)聚合函数的方法?

给定一个查询:

SELECT user, count(answer) FROM surveyValues WHERE study='a1' GROUP BY user;

这将给我每个用户回答的问题数量。我真正想要的是每个用户回答的平均问题数量……

SELECT avg(count(answer)) FROM surveyValues WHERE study='a1';

计算此统计信息的正确方法是什么?

如果有可能,是否有办法针对每个问题分解此统计信息?(用户可以多次回答相同的问题)。就像是:

SELECT avg(count(answer)) FROM surveyValues WHERE study='a1' GROUP BY question;

阅读 232

收藏
2020-05-17

共1个答案

一尘不染

您必须使用子查询:

  SELECT x.user, 
         AVG(x.cnt)
    FROM (SELECT user, COUNT(answer) AS cnt
            FROM surveyValues 
           WHERE study='a1' 
        GROUP BY user) x
GROUP BY x.user

您不能将一个聚合与另一个聚合一起包装。如果MySQL支持分析/排序/窗口功能,则可以将分析汇总起来。

2020-05-17