Masalah:
Anda ingin menemukan baris mana yang menyimpan nilai numerik terbesar dalam kolom tertentu.
Contoh:
Basis data kami memiliki tabel bernama student
dengan data pada kolom berikut:id
, first_name
, last_name
, dan grade
.
id | nama_depan | nama_belakang | kelas |
---|---|---|---|
1 | Lisa | Jackson | 3 |
2 | Gary | Larry | 5 |
3 | Tom | Michelin | 2 |
4 | Martin | Barker | 2 |
5 | Ellie | Hitam | 5 |
6 | Maria | Simpson | 4 |
Mari kita cari siswa yang memiliki nilai tertinggi.
Solusi:
SELECT id, first_name, last_name, grade FROM student WHERE grade = (SELECT MAX(grade) FROM student);
Ini hasilnya:
id | nama_depan | nama_belakang | kelas |
---|---|---|---|
2 | Gary | Larry | 5 |
5 | Ellie | Hitam | 5 |
Diskusi:
Untuk menemukan nilai maksimum kolom, gunakan MAX()
fungsi agregat; dibutuhkan nama kolom atau ekspresi untuk menemukan nilai maksimum. Dalam contoh kita, subquery mengembalikan angka tertinggi di kolom grade (subquery:SELECT MAX(grade) FROM student
). Kueri utama menampilkan id, nama depan dan belakang, dan nilainya. Untuk menampilkan hanya baris dengan nilai maksimum di antara semua nilai dalam kolom (mis., SELECT MAX(grade) FROM student
), gunakan WHERE dengan subquery. Di WHERE, letakkan nama kolom dengan nilai yang sebanding dengan nilai yang dikembalikan oleh fungsi agregat di subquery (dalam contoh kita:WHERE grade = (SELECT MAX(grade) FROM student)
).