sql >> Databasteknik >  >> RDS >> Mysql

Filtrera elever som inte har klarat ett ämne ännu

Jag skulle föreslå att du använder aggregering:

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

HAVING klausul räknar antalet resultat för varje student och kurs där den sista kolumnen är 'Pass' . I MySQL behandlas booleaner som heltal i ett numeriskt sammanhang, där sant är 1. Så, sum( Godkänd/Underkänd= 'Pass') räknar antalet gånger en student klarat kursen. = 0 säger att studenten aldrig klarat kursen.

Som ett förslag, lägg inte in specialtecken som / och . i kolumnnamn. Det kräver att man undslipper kolumnerna och gör bara koden svårare att skriva eftersom den är fylld med backticks.



  1. PreparedStatement mycket långsam, men manuell fråga snabb

  2. Failover &Failback på Amazon RDS

  3. Oracle PL/SQL:Hur man skriver ut en tabelltyp

  4. läsram med sqlalchemy, mysql och pandor