rss
twitter
facebook

Home

Simple Querys

--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:

 
Powered by Blogger