Até agora, você aprendeu como recuperar e filtrar dados. Agora é hora de tornar esses dados úteis.
Neste artigo, você aprenderá a:
Esta é a Parte 04 da série SQL do Zero ao Pro.
Por padrão, o SQL não garante a ordem dos dados.
Se a ordem for importante, você deve especificá-la explicitamente.
SELECT *
FROM employees
ORDER BY last_name;
Isso ordena os resultados em ordem crescente por padrão.
DESC vs ASC
SELECT *
FROM employees
ORDER BY hire_date DESC;
SELECT *
FROM employees
ORDER BY department ASC, hire_date DESC;
O que isso faz:
A cláusula LIMIT restringe quantas linhas são retornadas.
Exemplo
SELECT *
FROM products
LIMIT 10;
Retorna apenas as primeiras 10 linhas.
SELECT *
FROM products
ORDER BY price DESC
LIMIT 5;
Em português claro: “Mostre-me os 5 produtos mais caros.”
A maioria das perguntas do mundo real são perguntas de resumo, não perguntas de nível de linha.
Exemplos:
É aqui que entram as funções de agregação.
COUNT – Contar Linhas
SELECT COUNT(*)
FROM users;
Conta o total de linhas.
SUM – Somar Valores
SELECT SUM(total_amount)
FROM orders;
Soma valores numéricos.
AVG – Valor Médio
SELECT AVG(price)
FROM products;
Calcula a média aritmética.
MIN e MAX
SELECT MIN(price), MAX(price)
FROM products;
Encontra os valores mínimo (menor) e máximo (maior).
GROUP BY Explicado
O GROUP BY permite que você agregue por categoria.
Exemplo: Contar Usuários por País
SELECT country, COUNT(*) AS user_count
FROM users
GROUP BY country;
O que acontece:
Modelo Mental para o GROUP BY
O GROUP BY “achata” ou colapsa muitas linhas em poucas linhas de resumo.
Filtrando Agregações com HAVING
Você não pode usar WHERE com resultados de agregações.
Use HAVING em vez disso.
Exemplo:
SELECT country, COUNT(*) AS user_count
FROM users
GROUP BY country
HAVING COUNT(*) > 100;
Em português claro: “Mostre apenas os países com mais de 100 usuários.”
WHERE vs HAVING
| Cláusula | Filtra |
|---|---|
| WHERE | Linhas antes do agrupamento |
| HAVING | Grupos após a agregação |
| SQL | para Desenvolvedores vs Analistas |
SQL para Desenvolvedores
Desenvolvedores usam esses recursos para:
Padrões comuns:
SELECT COUNT(*)
FROM orders
WHERE status = 'pending';
SQL para Analistas de Dados
Analistas usam agregações constantemente para:
Padrões comuns:
SELECT department, AVG(salary)
FROM employees
GROUP BY department;
Exercício 1 – Ordenando Dados
Escreva uma consulta para:
employeeshire_date do mais novo para o mais antigoExercício 2 – Limitando Resultados
Escreva uma consulta para:
productsExercício 3 – Agregação Básica
Escreva uma consulta para:
usersExercício 4 – GROUP BY
Escreva uma consulta para:
Prática Bônus
Tente combinar:
Em uma única consulta.
Com ORDER BY, LIMIT e agregações, o SQL deixa de ser sobre linhas e passa a ser sobre respostas.
Se você consegue:
Você agora está fazendo SQL do mundo real.
No próximo artigo (SQL 05), mergulharemos em padrões de GROUP BY, HAVING em profundidade e pensamento analítico com SQL.
Boa consulta! 🚀
Exercício 1 – Ordenando Dados (Resposta)
SELECT *
FROM employees
ORDER BY hire_date DESC;
Explicação
Exercício 2 – Limitando Resultados (Resposta)
SELECT *
FROM products
ORDER BY price ASC
LIMIT 3;
Explicação
Exercício 3 – Agregação Básica (Resposta)
SELECT COUNT(*)
FROM users;
Explicação
Exercício 4 – GROUP BY (Resposta)
SELECT department, COUNT(*) AS employee_count
FROM employees
GROUP BY department;
Explicação
Exercício Bônus – Consulta Combinada (Exemplo de Resposta)
SELECT department, COUNT(*) AS employee_count
FROM employees
WHERE active = true
GROUP BY department
HAVING COUNT(*) > 10
ORDER BY employee_count DESC
LIMIT 5;
Explicação em Português Claro
Principais Aprendizados
Se você consegue ler e escrever consultas como estas, você está oficialmente pensando analiticamente em SQL.
A seguir: SQL 05 – Padrões de GROUP BY, Mergulho no HAVING e Pensamento Analítico 🚀