Я просто узнаю, что 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 поддерживает функции аналитики / ранжирования / управления окнами ...
да, все они выглядят разумно.
Вы пробовали их и получали неожиданные результаты?
Обычно я ожидаю, что вы также включите столбец вождения в список выбора:
SELECT question, avg(count(answer))
FROM surveyValues
WHERE study='a1'
GROUP BY question;