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) ).