Problem:
Du vill hitta vilka rader som lagrar det största numeriska värdet i en given kolumn.
Exempel:
Vår databas har en tabell som heter student
med data i följande kolumner:id
, first_name
, last_name
och grade
.
id | förnamn | efternamn | betyg |
---|---|---|---|
1 | Lisa | Jackson | 3 |
2 | Gary | Larry | 5 |
3 | Tom | Michelin | 2 |
4 | Martin | Barker | 2 |
5 | Ellie | Svart | 5 |
6 | Maria | Simpson | 4 |
Låt oss hitta de elever som har de högsta betygen.
Lösning:
SELECT id, first_name, last_name, grade FROM student WHERE grade = (SELECT MAX(grade) FROM student);
Här är resultatet:
id | förnamn | efternamn | betyg |
---|---|---|---|
2 | Gary | Larry | 5 |
5 | Ellie | Svart | 5 |
Diskussion:
För att hitta maxvärdet för en kolumn, använd MAX()
aggregerad funktion; det krävs ett kolumnnamn eller ett uttryck för att hitta det maximala värdet. I vårt exempel returnerar underfrågan det högsta numret i kolumnbetyget (underfråga:SELECT MAX(grade) FROM student
). Huvudfrågan visar id, för- och efternamn och deras betyg. För att endast visa raderna med det maximala värdet bland alla värden i kolumnen (t.ex. SELECT MAX(grade) FROM student
), använd WHERE med en underfråga. I WHERE anger du namnet på kolumnen med det jämförbara värdet med värdet som returneras av aggregatfunktionen i underfrågan (i vårt exempel:WHERE grade = (SELECT MAX(grade) FROM student)
).