CodeGym /Cursos /SQL SELF /Valores Mínimos e Máximos: MIN() e M...

Valores Mínimos e Máximos: MIN() e MAX()

SQL SELF
Nível 7, Lição 4
Disponível

Bora mergulhar no mundo dos extremos dos dados — procurando os valores mínimos e máximos. Relaxa, SQL não vai te obrigar a aprender nada super novo, mas a gente vai sacar como achar os maiores e menores valores nas tabelas. Essas funções estão em todo lugar: desde analisar notas de filmes no IMDb até calcular a menor temperatura em Marte.

MIN() e MAX() são funções agregadas que retornam o menor e o maior valor de um conjunto de dados. Elas funcionam tipo caçadores de extremos: MIN() acha o menor elemento, e MAX() — o maior. E não é só pra número não: dá pra buscar a menor e a maior string ou data também.

-- Forma geral das funções MIN e MAX
SELECT 
    MIN(column_name) AS min_value,
    MAX(column_name) AS max_value
FROM table_name;

Fácil demais! Agora bora ver como essa mágica funciona em vários cenários.

Sintaxe e exemplos básicos

Dados numéricos

Imagina que a gente tem uma tabela employees, com uma coluna de salários dos funcionários (salary).

Queremos saber o menor e o maior salário.

Tabela employees

id name salary
1 Anna Song 45000
2 Otto Art 30000
3 Maria Chi 120000
4 Alex Lin 90000
5 Eva Tan 60000
-- Exemplo para dados numéricos
SELECT 
    MIN(salary) AS min_salary,
    MAX(salary) AS max_salary
FROM employees;

Resultado

min_salary max_salary
30000 120000

Dados de texto

Você pode usar MIN() e MAX() com dados de texto também.

Elas comparam em ordem alfabética (sim, até letras podem ser "as menores" e "as maiores").

Imagina que temos uma tabela students, onde a coluna name guarda os nomes dos estudantes.

Tabela students

id name
1 Anna
2 Otto
3 Maria
4 Ben
5 Zoe
-- Exemplo para dados de texto
SELECT 
    MIN(name) AS first_name_in_order,
    MAX(name) AS last_name_in_order
FROM students;

Resultado

first_name_in_order last_name_in_order
Anna Zoe

Datas e horários
Vamos buscar a data mais antiga e a mais recente da tabela events.

Tabela events

id event_name event_date
1 New Year Party 2023-01-01
2 Summer Fest 2023-06-15
3 Halloween Bash 2023-10-31
4 Year End Gala 2023-12-31
-- Exemplo para trabalhar com datas
SELECT 
    MIN(event_date) AS earliest_date,
    MAX(event_date) AS latest_date
FROM events;

Resultado

earliest_date latest_date
2023-01-01 2023-12-31

Usando MIN() e MAX() em tabelas com valor NULL

Se a coluna tem valores NULL, pode ficar tranquilo: SQL ignora eles nos cálculos.

Ou seja, MIN() e MAX() só vão considerar os valores "normais".

Tabela employees_with_null

id name salary
1 Otto 30000
2 Maria NULL
3 Anna 120000
4 John NULL
-- Tabela com NULL
SELECT 
    MIN(salary) AS min_salary,
    MAX(salary) AS max_salary
FROM employees_with_null;

Se a coluna salary tem registros com NULL, eles são simplesmente ignorados.

min_salary max_salary
30000 120000

Mas se TODA a coluna for NULL, o resultado vai ser NULL.

Exemplos de uso de MIN() e MAX() em tarefas reais

Descobrindo o funcionário mais velho e o mais novo

Tabela employees

id name birth_date
1 Otto 1980-05-10
2 Maria 1990-11-20
3 Anna 1975-03-15
4 John 2000-08-01

Na tabela employees tem o campo birth_date, que guarda as datas de nascimento dos funcionários. Vamos descobrir quem é o mais velho e o mais novo.

SELECT
    MIN(birth_date) AS oldest_employee,
    MAX(birth_date) AS youngest_employee
FROM employees;

Resultado:

oldest_employee youngest_employee
1975-03-15 2000-08-01

Análise de vendas

id amount
1 150.00
2 75.50
3 200.00
4 120.00
5 500.00
6 90.00

Na tabela sales tem o campo amount, que guarda os valores das vendas. Vamos achar o menor e o maior valor de venda.

SELECT
    MIN(amount) AS smallest_sale,
    MAX(amount) AS largest_sale
FROM sales;

Resultado da consulta

smallest_sale largest_sale
75.50 500.00

Buscando o primeiro e o último pedido

Se você tem uma tabela orders com o campo order_date, dá pra descobrir fácil a primeira e a última data de pedido.

Tabela original orders

order_id customer_id order_date amount
101 1 2023-01-15 10:23:00 250.00
102 2 2023-02-10 14:45:00 150.00
103 3 2023-01-05 09:10:00 300.00
104 1 2023-03-22 16:30:00 500.00
105 4 2023-01-25 11:00:00 120.00
SELECT
    MIN(order_date) AS first_order,
    MAX(order_date) AS last_order
FROM orders;

Resultado da consulta:

first_order last_order
2023-01-05 09:10:00 2023-03-22 16:30:00

Detalhes do funcionamento do MIN() e MAX()

Comparação de textos: quando trabalha com strings, MIN() e MAX() comparam em ordem alfabética.

Trabalhando com NULL: NULL é ignorado se tiver outros valores na coluna. Mas se tudo for NULL, o resultado é NULL.

Comparação de datas: SQL considera não só o ano, mas também mês, dia, hora, minuto.

2
Tarefa
SQL SELF, nível 7, lição 4
Bloqueado
Encontrando a quantidade mínima e máxima
Encontrando a quantidade mínima e máxima
2
Tarefa
SQL SELF, nível 7, lição 4
Bloqueado
Encontrando a data de nascimento mais antiga e mais recente
Encontrando a data de nascimento mais antiga e mais recente
1
Pesquisa/teste
Agregação de dados, nível 7, lição 4
Indisponível
Agregação de dados
Agregação de dados
Comentários
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION