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