sql >> Database teknologi >  >> RDS >> Mysql

Filtrer elever, der endnu ikke har bestået et fag

Jeg vil foreslå at bruge aggregering:

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

HAVING klausul tæller antallet af resultater for hver elev og kursus, hvor den sidste kolonne er 'Pass' . I MySQL behandles booleaner som heltal i en numerisk kontekst, hvor sand er 1. Så sum( Bestået/Ikke bestået= 'Pass') tæller antallet af gange, en elev har bestået kurset. = 0 siger, at eleven aldrig har bestået kurset.

Som et forslag, indsæt ikke specialtegn såsom / og . i kolonnenavne. Det kræver, at man undslipper kolonnerne og gør bare koden sværere at skrive, fordi den er fyldt med backticks.



  1. Hvordan vælger man kun de ledige værelser på et reservationssystem?

  2. postgresql - kan ikke oprette database - OperationalError:kildedatabaseskabelon1 bliver tilgået af andre brugere

  3. Hvad er TDS Protocol Version 8.0, og hvorfor skal jeg bruge det?

  4. MySQL-forespørgsel for at returnere rækker, der er lig med eller større end en bestemt dato, hvor datoen er adskilt i år, måned og dag kolonner