SELECT student_id, section, count(*) as total
FROM raw_data r
WHERE response = 1
GROUP BY student_id, section
Il y a 4 sections sur le test, chacune avec un nombre différent de questions. Je veux savoir, pour chaque étudiant, et chaque section, combien de questions ils ont répondu correctement (réponse = 1).mysql SELECT COUNT (*) ... GROUP BY ... ne retourne pas les lignes où le nombre est zéro
Cependant, avec cette requête, si un étudiant ne reçoit aucune question dans une section donnée, cette ligne sera complètement absente de mon jeu de résultats. Comment puis-je m'assurer que pour chaque élève, 4 lignes sont TOUJOURS retournées, même si le "total" pour une ligne est 0?
Voici ce que mon jeu de résultats ressemble:
student_id section total
1 DAP--29 3
1 MEA--16 2
1 NNR--13 1 --> missing the 4th section for student #1
2 DAP--29 1
2 MEA--16 4
2 NNR--13 2 --> missing the 4th section for student #2
3 DAP--29 2
3 MEA--16 3
3 NNR--13 3 --> missing the 4th section for student #3
4 DAP--29 5
4 DAP--30 1
4 MEA--16 1
4 NNR--13 2 --> here, all 4 sections show up because student 4 got at least one question right in each section
Merci pour toute idée!
MISE À JOUR: J'ai essayé
SELECT student_id, section, if(count(*) is null, 0, count(*)) as total
et qui n'a pas changé les résultats du tout. D'autres idées?
MISE À JOUR 2: Je l'ai eu à travailler grâce la réponse ci-dessous:
SELECT student_id, section, SUM(CASE WHEN response = '1' THEN 1 ELSE 0 END) AS total
FROM raw_data r
WHERE response = 1
GROUP BY student_id, section
Vous devez montrer à quoi ressemble l'entrée. –