Resolucao efolio a bases dados 2011
|
1) Considere a Base de Dados Pedidos de Produtos: crie as tabelas, ligações entre tabelas e respectivo carregamento de dados para testes. De seguida crie consultas em SQL para as alíneas que se seguem:
1.1) Contar os pedidos que já foram satisfeitos. SELECT COUNT(*) AS qty_pedidos_satisfeitos FROM pedido
WHERE satisfeito = 'True'
1.2) Seleccionar todos os produtos cujo nome possua a string 'an' em qualquer posição do nome. SELECT *
FROM produto
WHERE nome LIKE '%an%'
1.3) Mostrar a identificação, o nome dos produtos e valor total do pedido (preço x quantidade) por produto, dos produtos que já foram pedidos, cuja soma total do pedido por produto seja superior a 100 euros.
SELECT linha_pedido.pedido_id, produto.nome AS produto_nome, ( SUM(linha_pedido.quantidade) * produto.preco ) AS produto_total
FROM linha_pedido INNER JOIN produto ON linha_pedido.produto_id = produto.produto_id
GROUP BY linha_pedido.pedido_id, produto.nome, produto.preco
HAVING ( SUM(linha_pedido.quantidade) * produto.preco ) > 100
1.4) Utilizando a cláusula IN responda: quais os produtos que nunca foram pedidos? SELECT *
FROM produto
WHERE produto_id NOT IN (SELECT produto_id FROM linha_pedido)
1.5) Utilizando a cláusula EXISTS responda: quais os clientes que nunca fizeram pedidos? SELECT *
FROM cliente
WHERE NOT EXISTS (SELECT cliente_id FROM pedido WHERE cliente.cliente_id = pedido.cliente_id) 1.6) Mostrar os dados dos produtos que nunca foram comprados por clientes que moram em Lisboa. SELECT *
FROM produto
WHERE produto_id NOT IN (SELECT linha_pedido.produto_id