sql >> Database >  >> RDS >> Mysql

MySQL-query - ontbrekende records ophalen bij gebruik van group-by

SQL is goed in het werken met reeksen gegevenswaarden in de database, maar niet zo goed in reeksen gegevenswaarden die niet zijn in de database.

De beste oplossing is om één kleine tabel aan te houden voor de waarden waarover u moet variëren:

CREATE TABLE ScoreValues (score int);
INSERT INTO ScoreValues (score) 
  VALUES (0), (1), (2), (3), (4), (5), (6), (7), (8), (9), (10);

Gezien uw opmerking dat u het maximum aantal punten van een test in een andere tabel definieert, kunt u op de volgende manier deelnemen aan die tabel, zolang ScoreValues zeker waarden heeft die minstens even hoog of hoger zijn dan de maximale punten van de hoogste test:

SELECT v.score, COUNT(tr.score) AS 'NumStudents'
FROM ScoreValues v 
  JOIN Tests t ON (v.score <= t.maxmarks)
  LEFT OUTER JOIN TestResults tr ON (v.score = tr.score AND t.testid = tr.testid)
WHERE t.testid = 'mytestid'
GROUP BY v.score;


  1. Hoe SQL-script in MySQL uit te voeren?

  2. Wat is de juiste naam voor een associatietabel (een veel-op-veel-relatie)

  3. Genereren van volgorde in volgorde

  4. MySQL ERROR 1045 (28000):Toegang geweigerd voor gebruiker 'bill'@'localhost' (met wachtwoord:JA)