2

適切なmysqlクエリを作成するのに苦労しています。表は次のとおりです。

**survey_result**
question_id
header_id
answer

答えが(0,1,2,3,4,5)の範囲のintである場合。特定のIDに対して、特定の回答が発生した回数をカウントするクエリを作成したいと思います。したがって、question_id = 1の場合、次のように表示します。

question_id answer occurence_number
1           0      12
1           1      20
1           2      34
1           3      5
1           4      9
1           5      15

そして、おそらく私は、発生回数が最も多いか、最も少ない答えを選びたいと思います。しかし、それは2番目の部分であり、私は最初の部分で苦労しています。

私がなんとかそれを終えることができた最初の声明の大きな助けで、これはどのように機能するバージョンが見えるかです:

select question_id, max(occurence_number) FROM
(select question_id, answer, count(*) as occurence_number
from survey_result
group by question_id, answer
order by question_id asc, occurence_number desc) as results
GROUP BY question_id
4

3 に答える 3

2
SELECT
  Question_id,
  answer,
  COUNT(answer)
FROM Questions
WHERE question_id = 1
GROUP BY Question_ID, answer;

2番目の部分では、最大発生数で回答を取得するには、次のようにします。

SELECT
  Question_id,
  answer,
  COUNT(answer)
FROM questions
GROUP BY Question_ID,  
         answer
HAVING COUNT(answer) = (SELECT MAX(TheCount)
                        FROM
                        (
                           SELECT COUNT(answer) AS TheCount
                           FROM questions
                           GROUP BY answer
                        ) AS t) ;

SQLフィドルデモ

または:単に:

SELECT
  Question_id,
  answer,
  COUNT(answer) Occurrance
FROM Questions
WHERE question_id = 1
GROUP BY Question_ID, answer
ORDER BY Occurrance DESC 
LIMIT 1;

しかし、これはあなたにただ一つの価値を与えるでしょう。ただし、同じ最大発生時間の回答がある場合は、前の回答を使用してください。

于 2013-02-02T13:15:26.840 に答える
1
select question_id, answer, count(*) as occurence_number
from survey_result
group by question_id, answer
order by question_id asc, occurence_number desc;
于 2013-02-02T13:12:08.593 に答える
0

SELECT Question_id、answer、COUNT(answer)FROM Questions WHERE = 1 GROUP BY(Question_ID、answer)

于 2013-02-02T14:05:50.923 に答える