Problema:
Vuoi trovare quali righe memorizzano il valore numerico più grande in una determinata colonna.
Esempio:
Il nostro database ha una tabella chiamata student
con i dati nelle seguenti colonne:id
, first_name
, last_name
e grade
.
id | nome | cognome | grado |
---|---|---|---|
1 | Lisa | Jackson | 3 |
2 | Gary | Larry | 5 |
3 | Tom | Michelin | 2 |
4 | Martin | Barker | 2 |
5 | Elli | Nero | 5 |
6 | Maria | Simpson | 4 |
Troviamo gli studenti che hanno i voti più alti.
Soluzione:
SELECT id, first_name, last_name, grade FROM student WHERE grade = (SELECT MAX(grade) FROM student);
Ecco il risultato:
id | nome | cognome | grado |
---|---|---|---|
2 | Gary | Larry | 5 |
5 | Elli | Nero | 5 |
Discussione:
Per trovare il valore massimo di una colonna, usa MAX()
funzione aggregata; ci vuole un nome di colonna o un'espressione per trovare il valore massimo. Nel nostro esempio, la sottoquery restituisce il numero più alto nella colonna voto (sottoquery:SELECT MAX(grade) FROM student
). La query principale mostra id, nome e cognome e il loro voto. Per visualizzare solo le righe con il valore massimo tra tutti i valori nella colonna (ad es. SELECT MAX(grade) FROM student
), usa WHERE con una sottoquery. In WHERE, inserisci il nome della colonna con il valore confrontabile con il valore restituito dalla funzione di aggregazione nella sottoquery (nel nostro esempio:WHERE grade = (SELECT MAX(grade) FROM student)
).