Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

MySQL Query - mendapatkan catatan yang hilang saat menggunakan group-by

SQL pandai bekerja dengan kumpulan nilai data dalam database, tetapi tidak begitu baik dalam kumpulan nilai data yang tidak dalam basis data.

Solusi terbaik adalah menyimpan satu tabel kecil untuk nilai yang Anda perlukan untuk rentang:

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

Mengingat komentar Anda bahwa Anda menentukan nilai maksimum dari pengujian di tabel lain, Anda dapat bergabung ke tabel itu dengan cara berikut, selama ScoreValues pasti memiliki nilai setidaknya setinggi atau lebih tinggi dari nilai maksimal ujian terbesar:

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. nilai default GUID untuk kolom di mysql

  2. MySQL:Mengetik NULL ke 0

  3. Bagaimana cara mengubah waktu dalam detik ke format HH:MM:SS di MySQL?

  4. Kode Kesalahan 1111. Penggunaan fungsi grup tidak valid

  5. Cara mengoptimalkan Kueri Kerangka Entitas