2012-11-22 2 views
1

질문 번호 및 응답 데이터가 포함 된 데이터 테이블이 있습니다.그룹 내에서 카운트 및 백분율을 얻습니다.

각 질문의 각 옵션에 대한 응답 수와 그 비율을 나타낼 수 있어야합니다.

예를 들어 데이터

questionNum ResponseNum 
1    1 
1    2 
1    2 
1    2 
1    3 
2    1 
2    1 
2    2 

....처럼 보일 수 있으며,이는 내가 할 수에게

questionNum  responseNum count percent 
1    1    1  20 
1    2    3  60 
1    3    1  20 
2    1    2  66 
2    2    1  33 

의 쿼리에서 각 응답의 수를 얻을 수있는 쿼리 결과를 제공해야 그러나 백분율을 얻는 방법을 보지 마라.

아무도 도와 줄 수 없습니까?

많은 감사

+0

참조 http://stackoverflow.com/questions/8753388/how-can-i-get-the-percentage-of-total-rows-with-mysql-for-a-group '크로스 조인 '그룹화되지 않은'COUNT (*)'만 반환하는 하위 쿼리에 대해 현재 그룹의 'COUNT()'를 해당 합계 값으로 나눌 수 있습니다. –

+0

이 답변은 조금 더 명확하게 읽을 수 있습니다. http://stackoverflow.com/questions/8768625/calculation-of-percentage-of-group-count –

답변

4
SELECT a.questionNum, a.responseNum, 
     COUNT(*) `count`, 
     (COUNT(*)/b.totalCOunt) * 100 Percentage 
FROM table1 a 
     INNER JOIN 
     (
      SELECT questionNum, COUNT(*) totalCOunt 
      FROM table1 
      GROUP BY questionNum 
     ) b ON a.questionNUm = b.questionNum 
GROUP BY questionNum, responseNum 

추가 기능 FLOOR

SELECT a.questionNum, a.responseNum, 
     COUNT(*) `count`, 
     FLOOR((COUNT(*)/b.totalCOunt) * 100) Percentage 
FROM table1 a 
     INNER JOIN 
     (
      SELECT questionNum, COUNT(*) totalCOunt 
      FROM table1 
      GROUP BY questionNum 
     ) b ON a.questionNUm = b.questionNum 
GROUP BY questionNum, responseNum 
+0

응답이 지연되어 죄송합니다. 솔루션에 감사드립니다. – Dave

+0

오신 것을 환영합니다. dave': D' –