Ficha 02 · SELECT, JOIN, agregações
- Escrever SELECT complexo
- Usar JOIN
- Agregar dados
- Combinar com subqueries
Contexto comum
Para todos os exercícios, usa este esquema:
Cliente (id, nome, email, cidade)
Produto (id, nome, preco, categoria_id, stock)
Categoria (id, nome)
Encomenda (id, cliente_id, data, total, estado)
EncomendaItem (encomenda_id, produto_id, qty, preco_unit)
Parte I · SELECT básico
Exercício 1 · Filtros (15 pts)
Escreve queries para:
a) Todos os clientes de Lisboa.
b) Produtos com stock <= 5.
c) Encomendas de Maio de 2026 com total > 100€.
d) Produtos cujo nome começa por "Caneta".
e) Encomendas com estado em ('pago', 'enviado').
Exercício 2 · ORDER BY e LIMIT (10 pts)
a) Top 5 produtos mais caros.
b) Top 3 cidades com mais clientes.
c) Última encomenda registada.
Parte II · Agregações
Exercício 3 · Funções (15 pts)
a) Quantos clientes existem?
b) Preço médio dos produtos?
c) Total facturado em encomendas pagas?
d) Por cidade, quantos clientes?
e) Mês com mais encomendas em 2026?
Exercício 4 · GROUP BY + HAVING (15 pts)
a) Categorias com mais de 10 produtos.
b) Clientes com 5+ encomendas e total gasto > 500€.
c) Produtos que apareceram em mais de 100 encomendas.
Parte III · JOINs
Exercício 5 · INNER JOIN (15 pts)
a) Nome do cliente e total de cada encomenda.
b) Produto e nome da categoria para cada produto.
c) Detalhes da encomenda 42: cliente, produtos, qty, preço.
Exercício 6 · LEFT JOIN (15 pts)
a) Todos os clientes, com nº de encomendas (0 incluído).
b) Clientes que nunca compraram.
c) Categorias e nº de produtos em cada (incluindo categorias com 0 produtos).
Parte IV · Subqueries
Exercício 7 · Subqueries (15 pts)
a) Produtos com preço acima da média.
b) Clientes que gastaram mais que a média dos clientes.
c) Produto mais caro de cada categoria.