quarta-feira, 6 de junho de 2007

Banco de Dados Exercício 3


1. Selecionar o nome das editoras que publicaram livros do autor “BOOCH”.

SELECT E.NOMEEDIT
FROM EDITORA E , LIVRO L, AUTORIA A , AUTOR
WHERE AUTOR.NOMEAUT = ' BOOCH ' AND E.CODIGO=L.CODEDIT AND L.CODIGO=A.CODLIVRO AND A.CODAUTOR=AUTOR.CODIGO;

2. Selecionar o nome dos usuários que pegaram 2 ou mais livros no ano de 2003.

SELECT A.NOME, COUNT(*)
FROM ALUNO A, EMPRESTIMO E, ITEMEMPREST I
WHERE A.CODIGO=E.CODALUNO AND
E.CODEMPREST=I.CODEMPREST
AND TO_CHAR(E.DATA,'YYYY')=2003
HAVING COUNT(*) >= 2

3. Selecionar o titulo dos livros que não foram emprestados em 2002.

SELECT L.TITULO
FROM LIVRO WHERE L.CODIGO NOT IN
( SELECT L.CODIGO
FROM LIVRO L , EXEMPLAR E, ITEMEMPREST I, EMPRESTI EMP
WHERE L.CODIGO=E.CODLIVRO AND E.CODEXEMPLAR=I.CODEMPREST AND I.CODEMPREST=EMP.CODEMPREST
AND TO_CHAR(EMP.DATA,'YYYY')=2002 )

4. Selecionar o nome da editora e o número de livros publicados, para as editoras que publicaram dois ou mais livros.

SELECT E.NOMEEDITORA, COUNT(L.CODLIVRO) AS NUM_LIVROS
FROM R6_EDITORA E, R6_LIVRO L
WHERE E.CODEDITORA = L.CODEDITORA
GROUP BY E.NOMEEDITORAHAVING COUNT(L.CODLIVRO) >= 2;

5. Selecionar a menor idade, a maior idade e a idade média dos usuários.

SELECT ROUND(MIN(MONTHS_BETWEEN(SYSDATE, U.DATANASC)/12)) AS MENOR,ROUND(MAX(MONTHS_BETWEEN(SYSDATE, U.DATANASC)/12)) AS MAIOR, ROUND(AVG(MONTHS_BETWEEN(SYSDATE, U.DATANASC)/12)) AS MEDIA
FROM R6_USUARIO U;

6. Selecionar o nome dos autores que não publicaram livros pela editora "CAMPUS".

SELECT A.NOMEAUTOR
FROM R6_AUTOR A, R6_AUTORIA AU, R6_EDITORA E, R6_LIVRO L
WHERE A.CODAUTOR = AU.CODAUTOR AND E.CODEDITORA = L.CODEDITORA AND AU.CODLIVRO = L.CODLIVRO AND E.NOMEEDITORA <> 'CAMPUS';

7. Selecionar o nome do usuário, o titulo do livro, e a data de empréstimo para os livros pertencentes à editora "LTC" ou que pertencem ao assunto "BANCO DE DADOS".

SELECT U.NOMEALUNO, L.TITULO, E.DATAEMPREST
FROM R6_ALUNO U,R6_LIVRO L, R6_EMPRESTIMO E,R6_EDITORA ED,R6_ASSUNTO A
WHERE ED.CODEDITORA = L.CODEDITORA AND L.CODASSUNTO = A.CODASSUNTO AND E.CODALUNO = U.CODALUNOAND (ED.NOMEEDITORA = 'LTC' OR A.DESCRICAO = 'BANCO DE DADOS');

8. Excluir os livros que nunca foram emprestados.

DELETE FROM R6_LIVRO LWHERE L.CODLIVRO NOT IN (SELECT L.CODLIVRO FROM R6_LIVRO L,R6_EXEMPLAR EX,R6_ITEMEMPREST I WHERE I.CODEXEMPLAR = EX.CODEXEMPLAR AND EX.CODLIVRO = L.CODLIVRO GROUP BY L.CODLIVRO);

9. Transferir os livros da editora “CAMPUS” para a editoras “MAKRON BOOKS”.

UPDATE R6_LIVRO SET CODEDITORA =
(SELECT CODEDITORA FROM R6_EDITORA WHERE NOMEEDITORA = 'MAKRON BOOKS') WHERE CODEDITORA = (SELECT CODEDITORA FROM R6_EDITORA WHERE NOMEEDITORA = 'CAMPUS')

10. Selecionar o titulo dos livros com o maior número de empréstimos no ano de 2003.

SELECT L.TITULO , MAX(COUNT(CODLIVRO))
FROM LIVRO L , EXEMPLAR E, ITEMEMPREST I, EMPRESTI EMP
WHERE L.CODIGO=E.CODLIVRO AND E.CODEXEMPLAR=I.CODEMPREST AND I.CODEMPREST=EMP.CODEMPREST;

Nenhum comentário:

Postar um comentário