Probleem:
U wilt weten in welke rijen de grootste numerieke waarde in een bepaalde kolom is opgeslagen.
Voorbeeld:
Onze database heeft een tabel met de naam student
met gegevens in de volgende kolommen:id
, first_name
, last_name
, en grade
.
id | voornaam | achternaam | cijfer |
---|---|---|---|
1 | Lisa | Jackson | 3 |
2 | Gary | Larry | 5 |
3 | Tom | Michelin | 2 |
4 | Martin | Barker | 2 |
5 | Ellie | Zwart | 5 |
6 | Maria | Simpson | 4 |
Laten we de studenten zoeken met de hoogste cijfers.
Oplossing:
SELECT id, first_name, last_name, grade FROM student WHERE grade = (SELECT MAX(grade) FROM student);
Dit is het resultaat:
id | voornaam | achternaam | cijfer |
---|---|---|---|
2 | Gary | Larry | 5 |
5 | Ellie | Zwart | 5 |
Discussie:
Gebruik de MAX()
. om de maximale waarde van een kolom te vinden geaggregeerde functie; er is een kolomnaam of uitdrukking nodig om de maximale waarde te vinden. In ons voorbeeld retourneert de subquery het hoogste getal in de kolom cijfer (subquery:SELECT MAX(grade) FROM student
). De hoofdquery toont id, voor- en achternaam en hun cijfer. Om alleen de rijen met de maximale waarde van alle waarden in de kolom weer te geven (bijv. SELECT MAX(grade) FROM student
), gebruik WHERE met een subquery. Plaats in WHERE de naam van de kolom met de vergelijkbare waarde met de waarde die wordt geretourneerd door de aggregatiefunctie in de subquery (in ons voorbeeld:WHERE grade = (SELECT MAX(grade) FROM student)
).