Advertisement
Guest User

Untitled

a guest
Feb 19th, 2019
92
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
MySQL 11.79 KB | None | 0 0
  1. -- EXERCICIO 75 QUESTÕES PROFERROR THIADO ELIAS
  2.  
  3. -- CRIAÇÃO DA TABELA ASSUNTO (1,N)
  4. CREATE TABLE ASSUNTO
  5. (
  6.     COD_ASSUNTO INT NOT NULL,
  7.     DECRICAO VARCHAR(50),
  8.     CONSTRAINT PK_ASSUNTO PRIMARY KEY(COD_ASSUNTO)
  9. );
  10.  
  11. -- CRIAÇÃO DA TABELA EDITORA (1,N)
  12. CREATE TABLE EDITORA
  13. (
  14.     COD_EDITORA INT NOT NULL,
  15.     CNPJ INT NOT NULL,
  16.     RAZAO_SOCIAL VARCHAR(50),
  17.     CONSTRAINT PK_EDITORA PRIMARY KEY(COD_EDITORA)
  18. );
  19.  
  20. -- CRIAÇÃO DA TABELA LIVRO (N,N)
  21. CREATE TABLE LIVRO
  22. (
  23.     COD_LIVRO INT NOT NULL,
  24.     ISBN INT NOT NULL,
  25.     TITULO VARCHAR(30),
  26.     PRECO FLOAT NOT NULL,
  27.     DATA_NASCIMENTO DATE,
  28.     COD_ASSUNTO INT NOT NULL REFERENCES ASSUNTO(COD_ASSUNTO),
  29.     COD_EDITORA INT NOT NULL REFERENCES EDITORA(COD_EDITORA),
  30.     CONSTRAINT PK_LIVRO PRIMARY KEY(COD_LIVRO)
  31. );
  32.  
  33. -- CRIANDO TABELA NACIONALIDADE
  34. CREATE TABLE NACIONALIDADE
  35. (
  36.     COD_NACIONALIDADE INT NOT NULL,
  37.     DESCRICAO VARCHAR(50),
  38.     CONSTRAINT PK_NACIONALIDADE PRIMARY KEY(COD_NACIONALIDADE)
  39. );
  40.  
  41. -- CRIANDO A TABELA AUTOR
  42. CREATE TABLE AUTOR
  43. (
  44.     COD_AUTOR INT NOT NULL,
  45.     CPF INT NOT NULL,
  46.     NOME VARCHAR(30),
  47.     DATA_NASCIMENTO DATE NOT NULL,
  48.     COD_NACIONALIDADE INT NOT NULL REFERENCES NACIONALIDADE(COD_NACIONALIDADE),
  49.     CONSTRAINT PK_COD_AUTOR PRIMARY KEY(COD_AUTOR)
  50. );
  51.  
  52. -- CRIANDO A TABELA AUTOR LIVRO (N,N)
  53. CREATE TABLE AUTOR_LIVRO
  54. (  
  55.     COD_AUTOR_LIVRO INT NOT NULL,
  56.     COD_AUTOR INT NOT NULL REFERENCES AUTOR(COD_AUTOR),
  57.     COD_LIVRO INT NOT NULL REFERENCES LIVRO(COD_LIVRO),
  58.     CONSTRAINT PK_AUTOR_LIVRO PRIMARY KEY(COD_AUTOR_LIVRO)
  59. );
  60.  
  61. INSERT INTO ASSUNTO VALUES(1);
  62. INSERT INTO ASSUNTO VALUES(2);
  63. INSERT INTO ASSUNTO VALUES(3);
  64. INSERT INTO ASSUNTO VALUES(4);
  65. INSERT INTO ASSUNTO VALUES(5);
  66. INSERT INTO ASSUNTO VALUES(6);
  67. INSERT INTO ASSUNTO VALUES(7);
  68. INSERT INTO ASSUNTO VALUES(8);
  69. INSERT INTO ASSUNTO VALUES(9);
  70. INSERT INTO ASSUNTO VALUES(10);
  71. INSERT INTO ASSUNTO VALUES(11, 'ESTRUTURA DE DADOS');
  72.  
  73. INSERT INTO EDITORA VALUES(1, 11111);
  74. INSERT INTO EDITORA VALUES(2, 22222);
  75. INSERT INTO EDITORA VALUES(3, 33333);
  76. INSERT INTO EDITORA VALUES(4, 44444);
  77. INSERT INTO EDITORA VALUES(5, 55555);
  78. INSERT INTO EDITORA VALUES(6, 66666);
  79. INSERT INTO EDITORA VALUES(7, 77777);
  80. INSERT INTO EDITORA VALUES(8, 88888);
  81. INSERT INTO EDITORA VALUES(9, 99999);
  82. INSERT INTO EDITORA VALUES(10, 101010);
  83.  
  84. INSERT INTO LIVRO VALUES(1, 111111, 'GAME OF TRHONES', 150.00, '2000-01-01', 1, 1);
  85. INSERT INTO LIVRO VALUES(2, 222222, 'NARUTO UZUMAKI', 560.00, '1990-02-01', 2, 2);
  86. INSERT INTO LIVRO VALUES(3, 333333, 'THE LAST KINGDOM', 86.00, '2005-10-01', 3, 3);
  87. INSERT INTO LIVRO VALUES(4, 444444, 'BOKU NO HERO', 1000.00, '2010-06-20', 4, 4);
  88. INSERT INTO LIVRO VALUES(5, 555555, 'ONE PIECE', 780.00, '2012-09-04', 5, 5);
  89. INSERT INTO LIVRO VALUES(6, 666666, 'FAIRY TAIL', 628.00, '2013-03-09', 6, 6);
  90. INSERT INTO LIVRO VALUES(7, 777777, 'DOUTOR HOUSE', 740.00, '2014-03-08', 7, 7);
  91. INSERT INTO LIVRO VALUES(8, 888888, 'LA CASA DE PAPEL', 835.00, '2015-08-15', 8, 8);
  92. INSERT INTO LIVRO VALUES(9, 999999, 'GRAVITY FALLS', 368.00, '2016-04-07', 9, 9);
  93. INSERT INTO LIVRO VALUES(10, 101010, 'SHIGEKY NO KYOJIN', 1120.00, '2017-05-05', 10, 10);
  94. INSERT INTO LIVRO VALUES(11, 1111111, 'BANCO', 220.00, '2015-04-05', 6, 6);
  95. INSERT INTO LIVRO VALUES(12, 2222222, 'BANCO', 320.00, '2011-08-05', 2, 2);
  96. INSERT INTO LIVRO VALUES(13, 3333333, 'BANCO DE DADOS', 215.00, '2018-09-05', 8, 8);
  97. INSERT INTO LIVRO VALUES(14, 4444444, 'BANCO DE DADO', 222.00, '2019-04-05', 3, 3);
  98. INSERT INTO LIVRO VALUES(15, 5555555, 'ESTRUTURA DE DADOS', 880.00, '2018-03-01', 7, 7);
  99. INSERT INTO LIVRO VALUES(16, 6666666, 'ESTRUTURA', 880.00, '2018-03-01', 11, 7);
  100.  
  101. INSERT INTO NACIONALIDADE VALUES(1, 'BRASIL');
  102. INSERT INTO NACIONALIDADE VALUES(2, 'ALEMANHA');
  103. INSERT INTO NACIONALIDADE VALUES(3, 'PARAGUAI');
  104. INSERT INTO NACIONALIDADE VALUES(4, 'PORTUGAL');
  105. INSERT INTO NACIONALIDADE VALUES(5, 'ARGENTINA');
  106. INSERT INTO NACIONALIDADE VALUES(6, 'ESTADOS UNIDOS');
  107. INSERT INTO NACIONALIDADE VALUES(7, 'EUROPA');
  108. INSERT INTO NACIONALIDADE VALUES(8, 'LONDRES');
  109. INSERT INTO NACIONALIDADE VALUES(9, 'CHELSEA');
  110. INSERT INTO NACIONALIDADE VALUES(10, 'ESPANHA');
  111.  
  112. INSERT INTO AUTOR VALUES(1, 1111, 'NELSON', '2018-05-10', 1);
  113. INSERT INTO AUTOR VALUES(2, 2222, 'FELIPE', '2017-04-10', 2);
  114. INSERT INTO AUTOR VALUES(3, 3333, 'LUAN', '2016-03-11', 3);
  115. INSERT INTO AUTOR VALUES(4, 4444, 'ANA', '2015-02-18', 4);
  116. INSERT INTO AUTOR VALUES(5, 5555, 'ADRIANA', '2014-09-9', 5);
  117. INSERT INTO AUTOR VALUES(6, 6666, 'GEOVANA', '2013-07-01', 6);
  118. INSERT INTO AUTOR VALUES(7, 7777, 'IGOR', '2012-08-09', 7);
  119. INSERT INTO AUTOR VALUES(8, 8888, 'FERNANDA', '2011-04-07', 8);
  120. INSERT INTO AUTOR VALUES(9, 9999, 'ROGERIO', '2010-06-10', 9);
  121. INSERT INTO AUTOR VALUES(10, 1010, 'CLAUDYA', '2018-01-03', 10);
  122. INSERT INTO AUTOR VALUES(11, 1010, 'CLAUDYA', '2018-01-03', 10);
  123. INSERT INTO AUTOR VALUES(12, 1001, 'RUAN', '2017-01-03', 10);
  124. INSERT INTO AUTOR VALUES(13, 1002, 'GUILHERME', '2017-02-03', 10);
  125.  
  126. INSERT INTO AUTOR_LIVRO VALUES(1, 1, 1);
  127. INSERT INTO AUTOR_LIVRO VALUES(2, 2, 2);
  128. INSERT INTO AUTOR_LIVRO VALUES(3, 3, 3);
  129. INSERT INTO AUTOR_LIVRO VALUES(4, 4, 4);
  130. INSERT INTO AUTOR_LIVRO VALUES(5, 5, 5);
  131. INSERT INTO AUTOR_LIVRO VALUES(6, 6, 6);
  132. INSERT INTO AUTOR_LIVRO VALUES(7, 7, 7);
  133. INSERT INTO AUTOR_LIVRO VALUES(8, 8, 8);
  134. INSERT INTO AUTOR_LIVRO VALUES(9, 9, 9);
  135. INSERT INTO AUTOR_LIVRO VALUES(10, 10, 10);
  136. INSERT INTO AUTOR_LIVRO VALUES(11, 9, 10);
  137.  
  138. -- 1º Livros que possuam preços superiores a R$ 50,00
  139. SELECT * FROM LIVRO WHERE PRECO > 50
  140.  
  141. -- 2º Livros que possuam preços entre R$ 100,00 e R$ 200,00.
  142. SELECT * FROM LIVRO WHERE PRECO >= 100 AND PRECO <= 200
  143.  
  144. -- 3º Livros cujos títulos possuam a palavra ‘BANCO’.
  145. SELECT * FROM LIVRO WHERE TITULO = 'BANCO'
  146.  
  147. -- 4º Livros cujos títulos iniciam com a palavra ‘BANCO’.
  148. SELECT * FROM LIVRO WHERE TITULO ILIKE 'BANCO%'
  149.  
  150. -- 5º Livros cujos títulos terminam com a palavra ‘CO’.
  151. SELECT * FROM LIVRO WHERE TITULO ILIKE '%CO'
  152.  
  153. -- 6º Livros cujos títulos possuem a expressão ‘Banco de Dados’ ou ‘Banco de Dado’.
  154. SELECT * FROM LIVRO WHERE TITULO = 'BANCO DE DADOS' OR TITULO = 'BANCO DE DADO'
  155.  
  156. -- 7º Livros que foram lançados há mais de 5 anos.
  157.  
  158. -- 8º Livros que ainda não foram lançados, ou seja, com a data de lançamento nula.
  159. SELECT * FROM LIVRO WHERE DATA_NASCIMENTO = NULL
  160.  
  161. -- 9º Livros cujo assunto seja ‘Estrutura de Dados’
  162. SELECT * FROM LIVRO WHERE COD_ASSUNTO IN
  163. (
  164.     SELECT COD_ASSUNTO FROM ASSUNTO WHERE DECRICAO = 'ESTRUTURA DE DADOS'
  165. );
  166.  
  167. -- 10º Livros cujo assunto tenha código 1, 2 ou 3.
  168. SELECT * FROM LIVRO WHERE COD_ASSUNTO IN (1, 2, 3);
  169.  
  170. -- 11º Quantidade de livros.
  171. SELECT COUNT(*) FROM LIVRO
  172.  
  173. -- 12º Quantidade de livros que ainda não foram lançados, ou seja, com a data de lançamento nula.
  174. SELECT COUNT(*) FROM LIVRO WHERE DATA_NASCIMENTO = NULL
  175.  
  176. -- 13º Somatório dos preços dos livros.
  177. SELECT SUM(PRECO) FROM LIVRO
  178.  
  179. -- 14º Média de preços dos livros.
  180. SELECT AVG(PRECO) FROM LIVRO
  181.  
  182. -- 15º Maior preço dos livros.
  183. SELECT MAX(PRECO) FROM LIVRO
  184.  
  185. -- 16º Menor preço dos livros
  186. SELECT MIN(PRECO) FROM LIVRO
  187.  
  188. -- 17º O preço médio dos livros para cada assunto.
  189. SELECT DECRICAO, AVG(PRECO) MEDIA_POR_ASSUNTO FROM LIVRO L, ASSUNTO A WHERE
  190. (
  191.     A.COD_ASSUNTO = L.COD_ASSUNTO
  192. )
  193. GROUP BY DECRICAO;
  194.  
  195. -- 18º Quantidade de livros para cada assunto
  196. SELECT DECRICAO, COUNT(*) QUANTIDADE_POR_ASSUNTO FROM LIVRO L, ASSUNTO A WHERE
  197. (
  198.     L.COD_ASSUNTO = A.COD_ASSUNTO
  199. )
  200. GROUP BY DECRICAO;
  201.  
  202. -- 19º O preço do livro mais caro de cada assunto, dentre aqueles que já foram lançados.
  203. SELECT DECRICAO, MAX(PRECO) MAIS_CARO_POR_ASSUNTO FROM LIVRO L, ASSUNTO A WHERE
  204. (
  205.     L.COD_ASSUNTO = A.COD_ASSUNTO
  206. )
  207. GROUP BY DECRICAO;
  208.  
  209. -- 20º Quantidade de livros lançados por editora.
  210. SELECT CNPJ, COUNT(COD_EDITORA) LANCADO_POR_EDITORA FROM EDITORA GROUP BY CNPJ
  211.  
  212. -- 21º Assuntos cujo preço médio dos livros ultrapassa R$ 50,00.
  213. SELECT * FROM (SELECT DECRICAO, AVG(PRECO) MEDIA_PRECO_POR_ASSUNTO FROM LIVRO L, ASSUNTO A WHERE L.COD_ASSUNTO = A.COD_ASSUNTO GROUP BY DECRICAO)
  214. A1 WHERE MEDIA_PRECO_POR_ASSUNTO > 50
  215.  
  216. -- 22º Assuntos que possuem pelo menos 2 livros.
  217. SELECT * FROM (SELECT DECRICAO, COUNT(*) QUANTIDADE_LIVRO FROM LIVRO L, ASSUNTO A WHERE L.COD_ASSUNTO = A.COD_ASSUNTO GROUP BY DECRICAO)
  218. A1 WHERE QUANTIDADE_LIVRO < 2
  219.  
  220. -- 23º Assuntos que possuem pelo menos 2 livros já lançados
  221. SELECT * FROM (SELECT DECRICAO, COUNT(DATA_NASCIMENTO) QUANTIDADE_LIVRO FROM LIVRO L, ASSUNTO A WHERE L.COD_ASSUNTO = A.COD_ASSUNTO GROUP BY DECRICAO)
  222. A1 WHERE QUANTIDADE_LIVRO > 2
  223.  
  224. -- 24º Quantidade de livros lançados por assunto.
  225. SELECT DECRICAO, COUNT(*) QUANTIDADE_POR_ASSUNTO FROM LIVRO L, ASSUNTO A WHERE
  226. (
  227.     L.COD_ASSUNTO = A.COD_ASSUNTO
  228. )
  229. GROUP BY DECRICAO;
  230.  
  231. -- 25º Nome e CPF dos autores que possuem a palavra ‘João’ no nome.
  232. SELECT A.NOME, A.CPF FROM AUTOR A WHERE A.NOME IN('JOÃO')
  233.  
  234. -- 26º Nome e CPF dos autores que nasceram após 1° de janeiro de 1970.
  235. SELECT A.NOME, A.CPF FROM AUTOR A WHERE A.DATA_NASCIMENTO >= '02-01-1970' AND A.DATA_NASCIMENTO <= '31-01-1990'
  236.  
  237. -- 27º Nome e CPF dos autores que não são brasileiros.
  238. SELECT A.NOME, A.CPF FROM AUTOR A INNER JOIN NACIONALIDADE N ON
  239. A.COD_NACIONALIDADE = N.COD_NACIONALIDADE WHERE N.DESCRICAO NOT IN('BRASIL')
  240. GROUP BY A.NOME, A.CPF
  241.  
  242. --28º  Quantidade de autores
  243. SELECT COUNT(A.COD_AUTOR) FROM AUTOR A
  244.  
  245. --29º Quantidade média de autores dos livros.
  246. SELECT AVG(A.COD_AUTOR) MEDIA_AUTOR_LIVRO FROM AUTOR A INNER JOIN AUTOR_LIVRO A_L ON
  247. A.COD_AUTOR = A_L.COD_AUTOR
  248.  
  249. --30º Livros que possuem ao menos 2 autores.
  250. SELECT L.TITULO LIVROS FROM LIVRO L INNER JOIN AUTOR_LIVRO A_L ON
  251. L.COD_LIVRO = A_L.COD_LIVRO INNER JOIN AUTOR A ON
  252. A_L.COD_AUTOR = A.COD_AUTOR WHERE
  253.  
  254. SELECT L.TITULO LIVROS FROM LIVRO L INNER JOIN AUTOR_LIVRO A_L ON
  255. L.COD_LIVRO = A_L.COD_LIVRO INNER JOIN AUTOR A ON
  256. A_L.COD_AUTOR = A.COD_AUTOR WHERE A.COD_AUTOR IN (SELECT A.COD_AUTOR FROM AUTOR_LIVRO A_L INNER JOIN AUTOR A ON
  257. A_L.COD_AUTOR = A.COD_AUTOR GROUP BY A.COD_AUTOR HAVING COUNT(A.COD_AUTOR) >= 2)
  258.  
  259. --31º Preço médio dos livros por editora.
  260. SELECT E.COD_EDITORA, AVG(L.PRECO) PRECO_MEDIO FROM LIVRO L INNER JOIN EDITORA E ON
  261. L.COD_EDITORA = E.COD_EDITORA GROUP BY E.COD_EDITORA
  262.  
  263. --32º Preço máximo, preço mínimo e o preço médio dos livros cujos códigos do assunto são 1, 2 ou 3, para cada editora.
  264. SELECT E.COD_EDITORA EDITORA, MAX(L.PRECO) PRECO_MAXIMO, MIN(L.PRECO) PRECO_MINIMO, AVG(L.PRECO) PRECO_MEDIO FROM LIVRO L INNER JOIN EDITORA E ON
  265. L.COD_EDITORA = E.COD_EDITORA INNER JOIN ASSUNTO A ON
  266. A.COD_ASSUNTO = E.COD_EDITORA WHERE A.COD_ASSUNTO IN(1, 2, 3) GROUP BY E.COD_EDITORA
  267.  
  268. --33º Quantidade de autores para cada nacionalidade.
  269. SELECT N.DESCRICAO NACIONALIDADE, COUNT(A.CPF) QUANTIDADE_AUTORES FROM NACIONALIDADE N INNER JOIN AUTOR A ON
  270. A.COD_NACIONALIDADE = N.COD_NACIONALIDADE GROUP BY N.DESCRICAO
  271.                        
  272. --34º Quantidade de autores que nasceram antes de 1°de janeiro de 1920, para cada nacionalidade.
  273. SELECT N.DESCRICAO NACIONALIDADE, COUNT(A.CPF) QUANTIDADE_AUTORES FROM NACIONALIDADE N INNER JOIN AUTOR A ON
  274. N.COD_NACIONALIDADE = A.COD_NACIONALIDADE WHERE A.DATA_NASCIMENTO NOT IN(SELECT A.DATA_NASCIMENTO FROM AUTOR A WHERE A.DATA_NASCIMENTO >= '2018-01-01' AND A.DATA_NASCIMENTO <= '2018-01-31')
  275. GROUP BY N.DESCRICAO
  276.  
  277. --35º A data de nascimento do autor mais velho.
  278. SELECT MIN(A.DATA_NASCIMENTO) AUTOR_MAIS_VELHO FROM AUTOR A
  279.  
  280. --36º  A data de nascimento do autor mais novo.
  281. SELECT MAX(A.DATA_NASCIMENTO) AUTOR_MAIS_VELHO FROM AUTOR A
  282.  
  283. --37º Os novos preços dos livros se os valores fossem reajustados em 10%.
  284. SELECT L.TITULO LIVROS, SUM(L.PRECO*1.1) NOVO_PRECO FROM LIVRO L
  285. GROUP BY L.TITULO
  286.  
  287. SELECT * FROM NACIONALIDADE N INNER JOIN AUTOR A ON
  288. N.COD_NACIONALIDADE = A.COD_NACIONALIDADE
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement