Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Filtern Sie Schüler, die ein Fach noch nicht bestanden haben

Ich würde vorschlagen, Aggregation zu verwenden:

SELECT `Reg.No`, SubjectCode, SUM(`Pass/Fail` = 'Pass')
FROM results
GROUP  BY `Reg.No`, SubjectCode
HAVING SUM(`Pass/Fail` = 'Pass') = 0;

Das HAVING -Klausel zählt die Anzahl der Ergebnisse für jeden Schüler und Kurs, wobei die letzte Spalte 'Pass' ist . In MySQL werden boolesche Werte in einem numerischen Kontext als ganze Zahlen behandelt, wobei wahr 1 ist. Also sum( Pass/Fail= 'Pass') zählt, wie oft ein Student den Kurs bestanden hat. Der = 0 sagt, dass der Student den Kurs nie bestanden hat.

Verwenden Sie als Vorschlag keine Sonderzeichen wie / und . in Spaltennamen. Das erfordert es, die Spalten zu maskieren und macht den Code nur schwerer zu schreiben, weil er mit Backticks gefüllt ist.