--2.1. Liste todos os nomes dos autores portugueses, ordenados por ordem alfabética?
SELECT NomeAutor
FROM Autor
WHERE Nacionalidade='Portuguesa'
ORDER BY NomeAutor ASC
--2.2. Quais os nomes dos livros de autores portugueses que foram publicados em 2007?
SELECT DISTINCT L.Titulo
FROM Livro L ,Escrito E, Autor A
WHERE L.ISBN=E.ISBN AND
E.IdAutor=A.IdAutor AND
YEAR(L.AnoPublicacao)='2007' AND
A.Nacionalidade='Portuguesa'
--2.3. Quanto é que os Clientes Portugueses gastaram em Livros nas lojas Boa Leitura?
SELECT SUM(Preco * Quantidade) AS Total_Gasto_PT
FROM Compra,Cliente
WHERE Cliente.Pais='Portugal' AND
Compra.IdCliente=Cliente.IdCliente
--2.4. Diga o nome dos autores que o cliente Marco António comprou, ordenados por ordem
alfabética.
SELECT DISTINCT NomeAutor
FROM Autor A,Cliente C,Compra CO,Escrito E,Livro L
WHERE L.ISBN=E.ISBN AND
E.IdAutor=A.IdAutor AND
L.ISBN =CO.ISBN AND
CO.IdCliente = C.IdCliente AND
NomeCliente = 'Marco António'
ORDER BY NomeAutor ASC
--2.5. Quais os editores (Id e Nome), que têm menos de 3 livros seus à venda nas loja Boa Leitura?
SELECT E.IdEditor, E.NomeEditor, Count(*)
FROM Editor E, Livro L
WHERE E.IdEditor=L.IdEditor
GROUP BY E.IdEditor,E.NomeEditor
HAVING COUNT(*)<=3
--2.6. Quais os livros que nunca foram comprados por ninguém?
SELECT L.Titulo
FROM Livro L
WHERE L.ISBN NOT IN (SELECT ISBN FROM Compra)
--2.7. Qual o(s) cliente(s) que gastou(aram) mais em compra de livros em 2008?
SELECT DISTINCT COUNT(CO.IdCliente),NomeCliente
FROM Cliente C, Compra CO
WHERE C.IdCliente = CO.IdCliente AND
YEAR(DataCompra)='2008'
GROUP BY NomeCliente
ORDER BY NomeCliente DESC
--Opção 1
SELECT Cl.NomeCliente, sum(Quantidade * Preco)
FROM Compra C, Cliente Cl
WHERE Cl.IdCliente = C.IdCliente
YEAR (C.DataCompra) = '2008' AND
GROUP BY Cl.NomeCliente
HAVING SUM(Quantidade * Preco) = (SELECT TOP 1 SUM(Quantidade * Preco)
FROM Compra C, Cliente Cl
WHERE Cl.IdCliente = C.IdCliente
YEAR (C.DataCompra) = '2008' AND
GROUP BY Cl.NomeCliente
ORDER BY 1 DESC)
--Opção 2
SELECT TOP 1 WITH TIES NomeCliente, SUM(Preco * Quantidade)
FROM Cliente CL, Compra C
WHERE CL.IdCliente = C.IdCliente
AND YEAR(DataCompra) = '2008'
GROUP BY NomeCliente
ORDER BY 2 DESC
--2.8. Liste os títulos e ano de publicação do editor Gradiva, ordenados por ano de publicação?
SELECT L.Titulo, L.AnoPublicacao
FROM Livro L,Editor E
WHERE E.IdEditor=L.IdEditor AND
E.NomeEditor like '%Gradiva%'
ORDER BY AnoPublicacao
--2.9. Que livros foram escritos por autores já falecidos?
SELECT L.Titulo,NomeAutor
FROM Livro L ,Escrito E, Autor A
WHERE L.ISBN=E.ISBN AND
E.IdAutor=A.IdAutor AND
DataMorte<GetDATE()
SELECT L.Titulo,NomeAutor
FROM Livro L ,Escrito E, Autor A
WHERE L.ISBN=E.ISBN AND
E.IdAutor=A.IdAutor AND
DataMorte IS NOT NULL
--2.10. Qual o gasto médio por cliente em 2008, apenas dos clientes que efecturam compras nesse ano?
SELECT NomeCliente, AVG(Preco * Quantidade) AS Gasto
FROM Cliente CLI, Compra C
WHERE CLI.IdCliente = C.IdCliente
YEAR(DataCompra) = '2008' AND
GROUP BY NomeCliente
ORDER BY NomeCliente DESC
0 comentários:
Enviar um comentário