我只是在学习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;
您必须使用子查询:
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支持分析/排序/窗口功能,则可以将分析汇总起来。