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