sql >> Database >  >> RDS >> Mysql

Filter studenten die nog niet geslaagd zijn voor een vak

Ik stel voor om aggregatie te gebruiken:

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

De HAVING clausule telt het aantal resultaten voor elke student en cursus waarbij de laatste kolom 'Pass' is . In MySQL worden booleans behandeld als gehele getallen in een numerieke context, waarbij waar 1 is. Dus sum( Pass/Fail= 'Pass') telt het aantal keren dat een student geslaagd is voor het vak. De = 0 zegt dat de student de cursus nooit heeft gehaald.

Gebruik als suggestie geen speciale tekens zoals / en . in kolomnamen. Dat vereist het ontsnappen van de kolommen en maakt de code alleen maar moeilijker om te schrijven omdat deze gevuld is met backticks.



  1. PostgreSQL:Hoe stel ik het zoekpad in op gebruikersniveau?

  2. Een SQL Server Agent-taak maken in Azure Data Studio

  3. MySQL UPDATE met IF-voorwaarde

  4. Oracle® Heterogene Services gebruiken met twee ODBC-gegevensbronnen