SQL Intermediário
Avançando além do básico, estes conceitos permitirão que você execute consultas mais complexas e poderosas, extraindo informações valiosas dos seus dados.
ORDER BY
A cláusula ORDER BY é usada para classificar o conjunto de resultados em ordem crescente (ASC) ou decrescente (DESC).
SELECT * FROM Alunos
ORDER BY nome ASC;
Para ordenar por múltiplas colunas (útil quando há valores repetidos na primeira coluna):
SELECT * FROM Alunos
ORDER BY curso_id ASC, idade DESC;
LIMIT e OFFSET
LIMIT é usado para especificar o número máximo de registros a retornar. OFFSET especifica quantos registros pular antes de começar a retornar.
SELECT * FROM Alunos
LIMIT 5 OFFSET 10;
Funções de Agregação
Funções de agregação realizam um cálculo em um conjunto de valores e retornam um único valor. São essenciais para análise de dados.
SELECT
COUNT(*) AS total_alunos,
AVG(idade) AS media_idade,
MIN(idade) AS idade_minima,
MAX(idade) AS idade_maxima,
SUM(idade) AS soma_idades
FROM Alunos;
Principais funções de agregação:
- COUNT() - Conta o número de registros
- SUM() - Soma os valores de uma coluna
- AVG() - Calcula a média dos valores
- MIN() - Encontra o valor mínimo
- MAX() - Encontra o valor máximo
GROUP BY
A cláusula GROUP BY agrupa linhas que têm os mesmos valores em colunas especificadas. É frequentemente usada com funções de agregação.
SELECT curso_id, COUNT(*) AS total
FROM Alunos
GROUP BY curso_id;
HAVING
HAVING é usado para filtrar resultados de grupos, assim como WHERE filtra registros individuais. A diferença é que HAVING funciona após o agrupamento.
SELECT curso_id, COUNT(*) AS total
FROM Alunos
GROUP BY curso_id
HAVING COUNT(*) >= 2;
Subqueries
Subqueries (consultas aninhadas) são consultas dentro de outras consultas SQL. Elas permitem realizar operações complexas em etapas.
SELECT nome
FROM Alunos
WHERE curso_id IN (
SELECT id FROM Cursos
WHERE area = 'Tecnologia'
);