sql >> Databáze >  >> RDS >> Mysql

MySQL Query – získávání chybějících záznamů při použití skupin po skupinách

SQL je dobrý v práci se sadami datových hodnot v databázi, ale ne tak dobrý v sadách datových hodnot, které nejsou v databázi.

Nejlepším řešením je ponechat si jednu malou tabulku pro hodnoty, které potřebujete překročit:

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

Vzhledem k vaší poznámce, že definujete maximální známky testu v jiné tabulce, můžete se k této tabulce připojit následujícím způsobem, pokud ScoreValues je jisté, že má hodnoty alespoň tak vysoké nebo vyšší, než jsou maximální známky největšího testu:

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. Co to znamená uniknout řetězci?

  2. Oracle Concurrent Manager

  3. CHAR() nebo VARCHAR() jako primární klíč v tabulce ISAM MySQL?

  4. Vlastník databáze postgresql nemá přístup k databázi - Nebyly nalezeny žádné vztahy.