복붙노트

[SQL] 어떻게 MySQL의 집계 기능을 결합?

SQL

어떻게 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;

해결법

  1. ==============================

    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이 기능을 윈도 / 순위 / 분석 지원되는 경우, 집계에 분석을 포장 할 수 ...

  2. ==============================

    2.예 - 그 모든 모습 합리적인.

    예 - 그 모든 모습 합리적인.

    당신이 그들을 시도하고 예상치 못한 결과를받은 적이 있습니까?

    일반적으로, 난 당신이 또한 선택 목록에서 구동 열을 포함하는 것이 기대 :

    SELECT question, avg(count(answer)) 
    FROM surveyValues 
    WHERE study='a1' 
    GROUP BY question; 
    
  3. from https://stackoverflow.com/questions/3409581/how-to-combine-aggregate-functions-in-mysql by cc-by-sa and MIT license