Problema:
Você deseja descobrir quais linhas armazenam o maior valor numérico em uma determinada coluna.
Exemplo:
Nosso banco de dados tem uma tabela chamada
student
com dados nas seguintes colunas:id
, first_name
, last_name
e grade
. id | first_name | last_name | classe |
---|---|---|---|
1 | Lisa | Jackson | 3 |
2 | Gary | Larry | 5 |
3 | Tom | Michelin | 2 |
4 | Martin | Barker | 2 |
5 | Ellie | Preto | 5 |
6 | Maria | Simpson | 4 |
Vamos encontrar os alunos que têm as notas mais altas.
Solução:
SELECT id, first_name, last_name, grade FROM student WHERE grade = (SELECT MAX(grade) FROM student);
Aqui está o resultado:
id | first_name | last_name | classe |
---|---|---|---|
2 | Gary | Larry | 5 |
5 | Ellie | Preto | 5 |
Discussão:
Para encontrar o valor máximo de uma coluna, use o
MAX()
função agregada; é necessário um nome de coluna ou uma expressão para encontrar o valor máximo. Em nosso exemplo, a subconsulta retorna o número mais alto na coluna nota (subconsulta:SELECT MAX(grade) FROM student
). A consulta principal exibe id, nome e sobrenome e sua nota. Para exibir apenas as linhas com o valor máximo entre todos os valores na coluna (por exemplo, SELECT MAX(grade) FROM student
), use WHERE com uma subconsulta. Em WHERE, coloque o nome da coluna com o valor comparável ao valor retornado pela função agregada na subconsulta (no nosso exemplo:WHERE grade = (SELECT MAX(grade) FROM student)
).