Problem:
Du ønsker at finde, hvilke rækker der gemmer den største numeriske værdi i en given kolonne.
Eksempel:
Vores database har en tabel ved navn student
med data i følgende kolonner:id
, first_name
, last_name
, og grade
.
id | fornavn | efternavn | karakter |
---|---|---|---|
1 | Lisa | Jackson | 3 |
2 | Gary | Larry | 5 |
3 | Tom | Michelin | 2 |
4 | Martin | Barker | 2 |
5 | Ellie | Sort | 5 |
6 | Mary | Simpson | 4 |
Lad os finde de elever, der har de højeste karakterer.
Løsning:
SELECT id, first_name, last_name, grade FROM student WHERE grade = (SELECT MAX(grade) FROM student);
Her er resultatet:
id | fornavn | efternavn | karakter |
---|---|---|---|
2 | Gary | Larry | 5 |
5 | Ellie | Sort | 5 |
Diskussion:
For at finde den maksimale værdi af en kolonne, brug MAX()
aggregeret funktion; det kræver et kolonnenavn eller et udtryk for at finde den maksimale værdi. I vores eksempel returnerer underforespørgslen det højeste tal i kolonnekarakteren (underforespørgsel:SELECT MAX(grade) FROM student
). Hovedforespørgslen viser id, for- og efternavn og deres karakter. For kun at vise rækkerne med den maksimale værdi blandt alle værdier i kolonnen (f.eks. SELECT MAX(grade) FROM student
), brug WHERE med en underforespørgsel. I WHERE skal du sætte navnet på kolonnen med den sammenlignelige værdi med den værdi, der returneres af den samlede funktion i underforespørgslen (i vores eksempel:WHERE grade = (SELECT MAX(grade) FROM student)
).