leoanjos

OR

Dec 13th, 2021 (edited)
247
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
SQL 21.63 KB | None | 0 0
  1. CREATE OR REPLACE TYPE tp_diretor AS OBJECT (
  2.     id_imdb VARCHAR2(20),
  3.     nome VARCHAR2(20),
  4.     data_de_nascimento DATE,
  5.    
  6.     ORDER MEMBER FUNCTION comparar_diretor(outro tp_diretor) RETURN INTEGER
  7. );
  8. /
  9.  
  10. CREATE OR REPLACE TYPE BODY tp_diretor AS
  11.     ORDER MEMBER FUNCTION comparar_diretor(outro tp_diretor) RETURN INTEGER IS
  12.     BEGIN
  13.         RETURN CASE WHEN nome < outro.nome THEN -1 WHEN nome > outro.nome THEN 1 ELSE 0 END;
  14.     END;
  15. END;
  16. /
  17.  
  18. CREATE TABLE tb_diretor OF tp_diretor (
  19.     id_imdb PRIMARY KEY
  20. );
  21. /
  22.  
  23. CREATE OR REPLACE TYPE tp_produtora AS OBJECT (
  24.     cnpj VARCHAR2(20),
  25.     nome VARCHAR2(40),
  26.     nome_fantasia VARCHAR2(40),
  27.     data_de_criacao DATE,
  28.     produz_filme INTEGER,
  29.     produz_serie INTEGER,
  30.    
  31.     ORDER MEMBER FUNCTION comparar_produtora(outro tp_produtora) RETURN INTEGER
  32. );
  33. /
  34.  
  35. CREATE OR REPLACE TYPE BODY tp_produtora AS
  36.     ORDER MEMBER FUNCTION comparar_produtora(outro tp_produtora) RETURN INTEGER IS
  37.     BEGIN
  38.         RETURN CASE WHEN nome_fantasia < outro.nome_fantasia THEN -1 WHEN nome_fantasia > outro.nome_fantasia THEN 1 ELSE 0 END;
  39.     END;
  40. END;
  41. /
  42.  
  43. CREATE TABLE tb_produtora OF tp_produtora (
  44.     cnpj PRIMARY KEY
  45. );
  46. /
  47.  
  48. CREATE OR REPLACE TYPE tp_plano AS OBJECT (
  49.     id_plano INTEGER,
  50.     preco INTEGER,
  51.     numero_de_telas INTEGER,
  52.     qualidade_de_video VARCHAR(5),
  53.    
  54.     MAP MEMBER FUNCTION mapear_plano RETURN INTEGER
  55. );
  56. /
  57.  
  58. ALTER TYPE tp_plano MODIFY ATTRIBUTE preco NUMBER;
  59. /
  60.  
  61. CREATE OR REPLACE TYPE BODY tp_plano AS
  62.     MAP MEMBER FUNCTION mapear_plano RETURN INTEGER IS
  63.     BEGIN
  64.         RETURN id_plano;
  65.     END;
  66. END;
  67. /
  68.  
  69. CREATE TABLE tb_plano OF tp_plano (
  70.     id_plano PRIMARY KEY
  71. );
  72. /
  73.  
  74. CREATE OR REPLACE TYPE tp_nomes AS VARRAY(10) OF VARCHAR2(40);
  75. /
  76.  
  77. CREATE OR REPLACE TYPE tp_categorias AS VARRAY(10) OF VARCHAR2(20);
  78. /
  79.  
  80. CREATE OR REPLACE TYPE tp_idiomas AS VARRAY(10) OF VARCHAR2(20);
  81. /
  82.  
  83. CREATE OR REPLACE TYPE tp_legendas AS VARRAY(10) OF VARCHAR2(20);
  84. /
  85.  
  86. CREATE OR REPLACE TYPE tp_midia AS OBJECT (
  87.     id_imdb VARCHAR2(20),
  88.     data_de_lancamento DATE,
  89.     nomes tp_nomes,
  90.     categorias tp_categorias,
  91.     idiomas tp_idiomas,
  92.     legendas tp_legendas,
  93.    
  94.     FINAL MEMBER PROCEDURE inserir_nome(nome VARCHAR2),
  95.     FINAL MEMBER PROCEDURE inserir_categoria(categoria VARCHAR2),
  96.     FINAL MEMBER PROCEDURE inserir_idioma(idioma VARCHAR2),
  97.     FINAL MEMBER PROCEDURE inserir_legenda(legenda VARCHAR2),
  98.     NOT INSTANTIABLE MEMBER FUNCTION get_duracao RETURN INTEGER
  99. ) NOT FINAL NOT INSTANTIABLE;
  100. /
  101.  
  102. CREATE OR REPLACE TYPE BODY tp_midia AS
  103.     FINAL MEMBER PROCEDURE inserir_nome(nome VARCHAR2) IS
  104.     BEGIN
  105.         nomes.EXTEND(1);
  106.         nomes(nomes.COUNT) := nome;
  107.     END;
  108.    
  109.     FINAL MEMBER PROCEDURE inserir_categoria(categoria VARCHAR2) IS
  110.     BEGIN
  111.         categorias.EXTEND(1);
  112.         categorias(categorias.COUNT) := categoria;
  113.     END;
  114.    
  115.     FINAL MEMBER PROCEDURE inserir_idioma(idioma VARCHAR2) IS
  116.     BEGIN
  117.         idiomas.EXTEND(1);
  118.         idiomas(idiomas.COUNT) := idioma;
  119.     END;
  120.    
  121.     FINAL MEMBER PROCEDURE inserir_legenda(legenda VARCHAR2) IS
  122.     BEGIN
  123.         legendas.EXTEND(1);
  124.         legendas(legendas.COUNT) := legenda;
  125.     END;
  126. END;
  127. /
  128.  
  129. CREATE OR REPLACE TYPE tp_filme UNDER tp_midia (
  130.     duracao INTEGER,
  131.     prequel REF tp_filme,
  132.    
  133.     CONSTRUCTOR FUNCTION tp_filme(SELF IN OUT NOCOPY tp_filme,
  134.         id_imdb VARCHAR2, data_de_lancamento DATE, nome VARCHAR2, categoria VARCHAR2,
  135.         idioma VARCHAR2, legenda VARCHAR2, duracao INTEGER, prequel REF tp_filme
  136.     ) RETURN SELF AS RESULT,
  137.    
  138.     OVERRIDING MEMBER FUNCTION get_duracao RETURN INTEGER
  139. );
  140. /
  141.  
  142. CREATE OR REPLACE TYPE BODY tp_filme AS
  143.     CONSTRUCTOR FUNCTION tp_filme(SELF IN OUT NOCOPY tp_filme,
  144.         id_imdb VARCHAR2, data_de_lancamento DATE, nome VARCHAR2, categoria VARCHAR2,
  145.         idioma VARCHAR2, legenda VARCHAR2, duracao INTEGER, prequel REF tp_filme
  146.     ) RETURN SELF AS RESULT IS
  147.     BEGIN
  148.         SELF.id_imdb := id_imdb;
  149.         SELF.data_de_lancamento := data_de_lancamento;
  150.         SELF.nomes := tp_nomes(nome);
  151.         SELF.categorias := tp_categorias(categoria);
  152.         SELF.idiomas := tp_idiomas(idioma);
  153.         SELF.legendas := tp_legendas(legenda);
  154.         SELF.duracao := duracao;
  155.         SELF.prequel := prequel;
  156.         RETURN;
  157.     END;
  158.    
  159.     OVERRIDING MEMBER FUNCTION get_duracao RETURN INTEGER IS
  160.     BEGIN
  161.         RETURN duracao;
  162.     END;
  163. END;
  164. /
  165.  
  166. CREATE TABLE tb_filme OF tp_filme (
  167.     id_imdb PRIMARY KEY,
  168.     prequel WITH ROWID REFERENCES tb_filme
  169. );
  170. /
  171.  
  172. CREATE OR REPLACE TYPE tp_serie UNDER tp_midia (
  173.     episodios INTEGER,
  174.    
  175.     CONSTRUCTOR FUNCTION tp_serie(SELF IN OUT NOCOPY tp_serie,
  176.         id_imdb VARCHAR2, data_de_lancamento DATE, nome VARCHAR2, categoria VARCHAR2,
  177.         idioma VARCHAR2, legenda VARCHAR2, episodios INTEGER
  178.     ) RETURN SELF AS RESULT,
  179.    
  180.     OVERRIDING MEMBER FUNCTION get_duracao RETURN INTEGER
  181. );
  182. /
  183.  
  184. CREATE OR REPLACE TYPE BODY tp_serie AS
  185.     CONSTRUCTOR FUNCTION tp_serie(SELF IN OUT NOCOPY tp_serie,
  186.         id_imdb VARCHAR2, data_de_lancamento DATE, nome VARCHAR2, categoria VARCHAR2,
  187.         idioma VARCHAR2, legenda VARCHAR2, episodios INTEGER
  188.     ) RETURN SELF AS RESULT IS
  189.     BEGIN
  190.         SELF.id_imdb := id_imdb;
  191.         SELF.data_de_lancamento := data_de_lancamento;
  192.         SELF.nomes := tp_nomes(nome);
  193.         SELF.categorias := tp_categorias(categoria);
  194.         SELF.idiomas := tp_idiomas(idioma);
  195.         SELF.legendas := tp_legendas(legenda);
  196.         SELF.episodios := episodios;
  197.         RETURN;
  198.     END;
  199.    
  200.     OVERRIDING MEMBER FUNCTION get_duracao RETURN INTEGER IS
  201.     BEGIN
  202.         RETURN episodios * 40;
  203.     END;
  204. END;
  205. /
  206.  
  207. CREATE TABLE tb_serie OF tp_serie (
  208.     id_imdb PRIMARY KEY
  209. );
  210. /
  211.  
  212. CREATE OR REPLACE TYPE tp_perfil AS OBJECT (
  213.     nome VARCHAR2(40),
  214.     pode_assistir_conteudo_adulto INTEGER
  215. );
  216. /
  217.  
  218. CREATE OR REPLACE TYPE tp_perfis AS TABLE OF tp_perfil;
  219. /
  220.  
  221. CREATE OR REPLACE TYPE tp_usuario AS OBJECT (
  222.     email VARCHAR2(40),
  223.     primeiro_nome VARCHAR2(20),
  224.     ultimo_nome VARCHAR2(20),
  225.     senha VARCHAR2(20),
  226.     data_de_nascimento DATE,
  227.     plano REF tp_plano,
  228.     perfis tp_perfis,
  229.    
  230.     MEMBER FUNCTION get_perfil(nome VARCHAR2) RETURN tp_perfil,
  231.     MEMBER FUNCTION numero_perfis RETURN INTEGER,
  232.     MEMBER FUNCTION idade RETURN INTEGER
  233. );
  234. /
  235.  
  236. CREATE OR REPLACE TYPE BODY tp_usuario AS
  237.     MEMBER FUNCTION get_perfil(nome VARCHAR2) RETURN tp_perfil IS
  238.         perfil tp_perfil;
  239.     BEGIN
  240.         SELECT VALUE(P) INTO perfil FROM TABLE(perfis) P WHERE P.nome = nome;
  241.         RETURN perfil;
  242.     END;
  243.    
  244.     MEMBER FUNCTION numero_perfis RETURN INTEGER IS
  245.     BEGIN
  246.         RETURN perfis.COUNT;
  247.     END;
  248.    
  249.     MEMBER FUNCTION idade RETURN INTEGER IS
  250.     BEGIN
  251.         RETURN TRUNC((SYSDATE - data_de_nascimento) / 365, 0);
  252.     END;
  253. END;
  254. /
  255.  
  256. CREATE TABLE tb_usuario OF tp_usuario (
  257.     email PRIMARY KEY,
  258.     plano WITH ROWID REFERENCES tb_plano
  259. ) NESTED TABLE perfis STORE AS tb_perfis;
  260. /
  261.  
  262. CREATE TABLE tb_tem (
  263.     diretor REF tp_diretor,
  264.     produtora REF tp_produtora SCOPE IS tb_produtora,
  265.     midia REF tp_midia
  266. );
  267. /
  268.  
  269. CREATE OR REPLACE TYPE tp_clipe AS OBJECT (
  270.     data_criacao DATE,
  271.     duracao INTEGER
  272. );
  273. /
  274.  
  275. CREATE OR REPLACE TYPE tp_clipes AS TABLE OF tp_clipe;
  276. /
  277.  
  278. CREATE OR REPLACE TYPE tp_perfil_midia AS OBJECT (
  279.     id_perfil_midia INTEGER,
  280.     data_inicio DATE,
  281.     usuario REF tp_usuario,
  282.     nome_perfil VARCHAR2(40),
  283.     midia REF tp_midia,
  284.     tempo_decorrido INTEGER,
  285.     segundo_atual INTEGER,
  286.     clipes tp_clipes
  287. );
  288. /
  289.  
  290. CREATE TABLE tb_perfil_midia OF tp_perfil_midia (
  291.     id_perfil_midia PRIMARY KEY,
  292.     usuario WITH ROWID REFERENCES tb_usuario
  293. ) NESTED TABLE clipes STORE AS tb_clipes;
  294. /
  295.  
  296. INSERT INTO tb_diretor VALUES (tp_diretor('nm1218281', 'Jon Watts', TO_DATE('28/06/1981', 'DD/MM/YYYY')));
  297. INSERT INTO tb_diretor VALUES (tp_diretor('nm0751577', 'Anthony Russo', TO_DATE('03/02/1970', 'DD/MM/YYYY')));
  298. INSERT INTO tb_diretor VALUES (tp_diretor('nm0751648', 'Joe Russo', TO_DATE('08/07/1971', 'DD/MM/YYYY')));
  299.  
  300. INSERT INTO tb_produtora VALUES (tp_produtora('12345678912345', 'Marvel', 'Marvel Cinematic Universe', TO_DATE('30/04/2008', 'DD/MM/YYYY'), 1, 1));
  301. INSERT INTO tb_produtora VALUES (tp_produtora('98765432198765', 'Disney', 'The Walt Disney Company', TO_DATE('01/01/1923', 'DD/MM/YYYY'), 1, 1));
  302.  
  303. INSERT INTO tb_plano VALUES (tp_plano(1, 27.90, 1, 'SD'));
  304. INSERT INTO tb_plano VALUES (tp_plano(2, 36.90, 2, 'HD'));
  305. INSERT INTO tb_plano VALUES (tp_plano(3, 45.90, 4, '4K'));
  306.  
  307. INSERT INTO tb_filme VALUES (tp_filme('tt4154756', TO_DATE('26/04/2018', 'DD/MM/YYYY'), tp_nomes('Vingadores: Guerra Infinita', 'Avengers: Infinity War'),
  308.     tp_categorias('Fantasia', 'Ação'), tp_idiomas('Inglês'), tp_legendas('Português', 'Inglês'), 8940, NULL));
  309.    
  310. INSERT INTO tb_filme VALUES (tp_filme('tt4154796', TO_DATE('25/04/2019', 'DD/MM/YYYY'), tp_nomes('Vingadores: Ultimato', 'Avengers: Endgame'),
  311.     tp_categorias('Fantasia', 'Aventura'), tp_idiomas('Português', 'Inglês'), tp_legendas('Português'), 10920,
  312.     (SELECT REF(F) FROM tb_filme F WHERE F.id_imdb = 'tt4154756')));
  313.    
  314. INSERT INTO tb_filme VALUES (tp_filme('tt2250912', TO_DATE('06/07/2017', 'DD/MM/YYYY'), 'Homem-Aranha: De Volta para a Casa',
  315.     'Fantasia', 'Português', 'Português', 7980, NULL));
  316.  
  317. INSERT INTO tb_filme VALUES (tp_filme('tt6320628', TO_DATE('04/07/2019', 'DD/MM/YYYY'), 'Homem-Aranha: Longe de Casa',
  318.     'Ação', 'Português', 'Português', 7740, (SELECT REF(F) FROM tb_filme F WHERE F.id_imdb = 'tt2250912')));
  319.  
  320. INSERT INTO tb_filme VALUES (tp_filme('tt10872600', TO_DATE('16/12/2021', 'DD/MM/YYYY'), 'Homem-Aranha: Sem Volta para a Casa',
  321.     'Fantasia', 'Português', 'Português', 8880, (SELECT REF(F) FROM tb_filme F WHERE F.id_imdb = 'tt6320628')));
  322.  
  323. INSERT INTO tb_serie VALUES (tp_serie('tt2442560', TO_DATE('12/09/2013', 'DD/MM/YYYY'), tp_nomes('Peaky Blinders'),
  324.     tp_categorias('Drama'), tp_idiomas('Inglês'), tp_legendas('Português'), 90));
  325.  
  326. INSERT INTO tb_serie VALUES (tp_serie('tt2306299', TO_DATE('03/03/2013', 'DD/MM/YYYY'), tp_nomes('Vikings'),
  327.     tp_categorias('Ação'), tp_idiomas('Português'), tp_legendas('Inglês'), 100));
  328.  
  329. INSERT INTO tb_serie VALUES (tp_serie('tt0903747', TO_DATE('20/01/2008', 'DD/MM/YYYY'), tp_nomes('Breaking Bad'),
  330.     tp_categorias('Drama'), tp_idiomas('Inglês'), tp_legendas('Espanhol'), 90));
  331.  
  332. INSERT INTO tb_serie VALUES (tp_serie('tt0944947', TO_DATE('17/04/2011', 'DD/MM/YYYY'), tp_nomes('Game Of Thrones'),
  333.     tp_categorias('Aventura'), tp_idiomas('Espanhol'), tp_legendas('Português'), 101));
  334.  
  335. INSERT INTO tb_serie VALUES (tp_serie('tt9561862', TO_DATE('15/03/2019', 'DD/MM/YYYY'), tp_nomes('Love, Death and Robots'),
  336.     tp_categorias('Animação'), tp_idiomas('Russo'), tp_legendas('Inglês'), 50));
  337.  
  338. INSERT INTO tb_usuario VALUES('lucasmelo1997@gmail.com', 'Lucas', 'Melo', 'AJHDG5', TO_DATE('03/07/1997', 'DD/MM/YYYY'),
  339.     (SELECT REF(P) FROM tb_plano P WHERE P.id_plano = 1), tp_perfis(tp_perfil('Gigi', 1), tp_perfil('Lucas', 1), tp_perfil('Ana', 1 )));
  340.  
  341. INSERT INTO tb_usuario VALUES('gisele-beez@gmail.com', 'Gisele', 'Beez', 'AJHDASKHDG666', TO_DATE('07/07/1995', 'DD/MM/YYYY'),
  342.     (SELECT REF(P) FROM tb_plano P WHERE P.id_plano = 1), tp_perfis(tp_perfil('Gisele', 1), tp_perfil('Luquinhas', 0)));
  343.  
  344. INSERT INTO tb_usuario VALUES('titikretz@gmail.com', 'Tifany', 'Melo', 'HASGKKDG', TO_DATE('12/10/1997', 'DD/MM/YYYY'),
  345.     (SELECT REF(P) FROM tb_plano P WHERE P.id_plano = 2), tp_perfis(tp_perfil('Lily', 0), tp_perfil('Jujuba', 0)));
  346.  
  347. INSERT INTO tb_usuario VALUES('lumajuliacyra@gmail.com', 'Luisa', 'Maranha', 'IOASO1000', TO_DATE('09/02/1990', 'DD/MM/YYYY'),
  348.     (SELECT REF(P) FROM tb_plano P WHERE P.id_plano = 1), tp_perfis(tp_perfil('Luma', 1)));
  349.  
  350. INSERT INTO tb_usuario VALUES('fernanda-kitz-88@gmail.com', 'Fernanda', 'Kitz', 'KAIJSAIX90', TO_DATE('18/05/1988', 'DD/MM/YYYY'),
  351.     (SELECT REF(P) FROM tb_plano P WHERE P.id_plano = 3), tp_perfis(tp_perfil('Nanda', 1), tp_perfil('Higor', 1), tp_perfil('Pedro', 1), tp_perfil('Ana', 1)));
  352.  
  353. INSERT INTO tb_usuario VALUES('bililalindsay@gmail.com', 'Lindsay', 'Nentuck', '90887ADSUG', TO_DATE('22/09/1988', 'DD/MM/YYYY'),
  354.     (SELECT REF(P) FROM tb_plano P WHERE P.id_plano = 2), tp_perfis(tp_perfil('Dada', 0), tp_perfil('Higor', 1), tp_perfil('Lindsay', 1)));
  355.    
  356. INSERT INTO tb_tem VALUES ((SELECT REF(D) FROM tb_diretor D WHERE D.id_imdb = 'nm0751577'),
  357.     (SELECT REF(P) FROM tb_produtora P WHERE P.cnpj = '12345678912345'), (SELECT REF(F) FROM tb_filme F WHERE F.id_imdb = 'tt4154756'));
  358.    
  359. INSERT INTO tb_tem VALUES ((SELECT REF(D) FROM tb_diretor D WHERE D.id_imdb = 'nm0751648'),
  360.     (SELECT REF(P) FROM tb_produtora P WHERE P.cnpj = '12345678912345'), (SELECT REF(F) FROM tb_filme F WHERE F.id_imdb = 'tt4154756'));
  361.    
  362. INSERT INTO tb_tem VALUES ((SELECT REF(D) FROM tb_diretor D WHERE D.id_imdb = 'nm0751577'),
  363.     (SELECT REF(P) FROM tb_produtora P WHERE P.cnpj = '12345678912345'), (SELECT REF(F) FROM tb_filme F WHERE F.id_imdb = 'tt4154796'));
  364.    
  365. INSERT INTO tb_tem VALUES ((SELECT REF(D) FROM tb_diretor D WHERE D.id_imdb = 'nm0751648'),
  366.     (SELECT REF(P) FROM tb_produtora P WHERE P.cnpj = '12345678912345'), (SELECT REF(F) FROM tb_filme F WHERE F.id_imdb = 'tt4154796'));
  367.    
  368. INSERT INTO tb_tem VALUES ((SELECT REF(D) FROM tb_diretor D WHERE D.id_imdb = 'nm1218281'),
  369.     (SELECT REF(P) FROM tb_produtora P WHERE P.cnpj = '12345678912345'), (SELECT REF(F) FROM tb_filme F WHERE F.id_imdb = 'tt2250912'));
  370.    
  371. INSERT INTO tb_tem VALUES ((SELECT REF(D) FROM tb_diretor D WHERE D.id_imdb = 'nm1218281'),
  372.     (SELECT REF(P) FROM tb_produtora P WHERE P.cnpj = '12345678912345'), (SELECT REF(F) FROM tb_filme F WHERE F.id_imdb = 'tt6320628'));
  373.    
  374. INSERT INTO tb_tem VALUES ((SELECT REF(D) FROM tb_diretor D WHERE D.id_imdb = 'nm1218281'),
  375.     (SELECT REF(P) FROM tb_produtora P WHERE P.cnpj = '12345678912345'), (SELECT REF(F) FROM tb_filme F WHERE F.id_imdb = 'tt10872600'));
  376.    
  377. INSERT INTO tb_perfil_midia VALUES (1, TO_DATE('20/05/2010 12:50:42', 'DD/MM/YYYY HH24:MI:SS'),
  378.     (SELECT REF(U) FROM tb_usuario U WHERE U.email = 'fernanda-kitz-88@gmail.com'),
  379.     'Nanda', (SELECT REF(F) FROM tb_filme F WHERE F.id_imdb = 'tt4154756'), 3000, 50,
  380.     tp_clipes(tp_clipe(TO_DATE('20/05/2010 13:23:15', 'DD/MM/YYYY HH24:MI:SS'), 20)));
  381.    
  382. INSERT INTO tb_perfil_midia VALUES (2, TO_DATE('10/11/2021 23:15:12', 'DD/MM/YYYY HH24:MI:SS'),
  383.     (SELECT REF(U) FROM tb_usuario U WHERE U.email = 'bililalindsay@gmail.com'),
  384.     'Dada', (SELECT REF(F) FROM tb_filme F WHERE F.id_imdb = 'tt2250912'), 152, 152,
  385.     tp_clipes(tp_clipe(TO_DATE('11/11/2021 01:10:05', 'DD/MM/YYYY HH24:MI:SS'), 8)));
  386.    
  387. INSERT INTO tb_perfil_midia VALUES (3, TO_DATE('23/06/2010 15:24:36', 'DD/MM/YYYY HH24:MI:SS'),
  388.     (SELECT REF(U) FROM tb_usuario U WHERE U.email = 'fernanda-kitz-88@gmail.com'),
  389.     'Nanda', (SELECT REF(F) FROM tb_filme F WHERE F.id_imdb = 'tt4154796'), 1564, 968,
  390.     tp_clipes(tp_clipe(TO_DATE('23/06/2010 16:20:07', 'DD/MM/YYYY HH24:MI:SS'), 10),
  391.         tp_clipe(TO_DATE('23/06/2010 16:43:45', 'DD/MM/YYYY HH24:MI:SS'), 20)));
  392.        
  393. INSERT INTO tb_perfil_midia VALUES (4, TO_DATE('12/12/2021 22:42:05', 'DD/MM/YYYY HH24:MI:SS'),
  394.     (SELECT REF(U) FROM tb_usuario U WHERE U.email = 'bililalindsay@gmail.com'),
  395.     'Dada', (SELECT REF(S) FROM tb_serie S WHERE S.id_imdb = 'tt2306299'), 51, 51,
  396.     tp_clipes());
  397.    
  398. INSERT INTO tb_perfil_midia VALUES (5, TO_DATE('13/12/2021 20:10:12', 'DD/MM/YYYY HH24:MI:SS'),
  399.     (SELECT REF(U) FROM tb_usuario U WHERE U.email = 'bililalindsay@gmail.com'),
  400.     'Dada', (SELECT REF(S) FROM tb_serie S WHERE S.id_imdb = 'tt2306299'), 173, 168,
  401.     tp_clipes());
  402.    
  403. INSERT INTO tb_perfil_midia VALUES (6, TO_DATE('02/07/2011 11:14:06', 'DD/MM/YYYY HH24:MI:SS'),
  404.     (SELECT REF(U) FROM tb_usuario U WHERE U.email = 'fernanda-kitz-88@gmail.com'),
  405.     'Nanda', (SELECT REF(S) FROM tb_serie S WHERE S.id_imdb = 'tt2306299'), 643, 643,
  406.     tp_clipes(tp_clipe(TO_DATE('02/07/2011 11:53:28', 'DD/MM/YYYY HH24:MI:SS'), 8)));
  407.    
  408. INSERT INTO tb_perfil_midia VALUES (7, TO_DATE('04/07/2021 11:35:26', 'DD/MM/YYYY HH24:MI:SS'),
  409.     (SELECT REF(U) FROM tb_usuario U WHERE U.email = 'fernanda-kitz-88@gmail.com'),
  410.     'Nanda', (SELECT REF(F) FROM tb_filme F WHERE F.id_imdb = 'tt6320628'), 1524, 1524,
  411.     tp_clipes(tp_clipe(TO_DATE('04/07/2021 11:48:05', 'DD/MM/YYYY HH24:MI:SS'), 12)));
  412.    
  413. INSERT INTO tb_perfil_midia VALUES (8, TO_DATE('06/07/2021 11:42:05', 'DD/MM/YYYY HH24:MI:SS'),
  414.     (SELECT REF(U) FROM tb_usuario U WHERE U.email = 'fernanda-kitz-88@gmail.com'),
  415.     'Nanda', (SELECT REF(F) FROM tb_filme F WHERE F.id_imdb = 'tt10872600'), 2403, 2398,
  416.     tp_clipes());
  417.  
  418. -- Usuário
  419. SELECT * FROM TABLE(SELECT perfis FROM tb_usuario WHERE email = 'fernanda-kitz-88@gmail.com');
  420. SELECT DEREF(plano).numero_de_telas Telas FROM tb_usuario WHERE email = 'titikretz@gmail.com';
  421. SELECT primeiro_nome, ultimo_nome, U.idade() Idade FROM tb_usuario U WHERE U.email = 'lumajuliacyra@gmail.com';
  422.  
  423. -- Perfil
  424. SELECT TRUNC(segundo_atual / 60, 0) Minuto_Atual FROM tb_perfil_midia
  425. WHERE usuario = (SELECT REF(U) FROM tb_usuario U WHERE U.email = 'bililalindsay@gmail.com')
  426. AND nome_perfil = 'Dada' AND midia = (SELECT REF(S) FROM tb_serie S WHERE S.id_imdb = 'tt2306299')
  427. ORDER BY data_inicio DESC FETCH FIRST 1 ROWS ONLY;
  428.  
  429. SELECT nome, pode_assistir_conteudo_adulto FROM TABLE(SELECT perfis FROM tb_usuario WHERE email = 'lucasmelo1997@gmail.com') WHERE nome = 'Lucas';
  430.  
  431. SELECT nome FROM TABLE(SELECT perfis FROM tb_usuario WHERE email = 'gisele-beez@gmail.com') WHERE pode_assistir_conteudo_adulto = 1;
  432.  
  433. SELECT DEREF(midia).id_imdb Midias_em_Comum FROM tb_perfil_midia WHERE usuario = (SELECT REF(U) FROM tb_usuario U WHERE U.email = 'fernanda-kitz-88@gmail.com') AND nome_perfil = 'Nanda'
  434. INTERSECT
  435. SELECT DEREF(midia).id_imdb FROM tb_perfil_midia WHERE usuario = (SELECT REF(U) FROM tb_usuario U WHERE U.email = 'bililalindsay@gmail.com') AND nome_perfil = 'Dada';
  436.  
  437. -- Mídia
  438. SELECT episodios FROM tb_serie WHERE id_imdb = 'tt2306299';
  439. SELECT column_value Idiomas_Disponiveis FROM TABLE(SELECT idiomas FROM tb_filme WHERE id_imdb = 'tt4154796');
  440. SELECT column_value Legendas_Disponiveis FROM TABLE(SELECT legendas FROM tb_filme WHERE id_imdb = 'tt4154756');
  441. SELECT data_de_lancamento FROM tb_serie WHERE id_imdb = 'tt2306299';
  442. SELECT column_value Nome_Prequel FROM TABLE(SELECT DEREF(prequel).nomes FROM tb_filme WHERE id_imdb = 'tt4154796') FETCH FIRST 1 ROWS ONLY;
  443. SELECT N.column_value Series_Disponiveis_em_Ingles FROM tb_serie S, TABLE(S.nomes) N WHERE 'Inglês' IN (SELECT * FROM TABLE(idiomas));
  444.  
  445. -- Clipe
  446. SELECT duracao FROM TABLE(SELECT clipes FROM tb_perfil_midia
  447. WHERE usuario = (SELECT REF(U) FROM tb_usuario U WHERE U.email = 'fernanda-kitz-88@gmail.com')
  448. AND nome_perfil = 'Nanda' AND midia = (SELECT REF(F) FROM tb_filme F WHERE F.id_imdb = 'tt4154756')
  449. AND data_inicio = TO_DATE('20/05/2010 12:50:42', 'DD/MM/YYYY HH24:MI:SS'))
  450. WHERE data_criacao = TO_DATE('20/05/2010 13:23:15', 'DD/MM/YYYY HH24:MI:SS');
  451.  
  452. SELECT TRUNC(SYSDATE - data_criacao, 0) Dias FROM TABLE(SELECT clipes FROM tb_perfil_midia
  453. WHERE usuario = (SELECT REF(U) FROM tb_usuario U WHERE U.email = 'bililalindsay@gmail.com')
  454. AND nome_perfil = 'Dada' AND midia = (SELECT REF(F) FROM tb_filme F WHERE F.id_imdb = 'tt2250912')
  455. AND data_inicio = TO_DATE('10/11/2021 23:15:12', 'DD/MM/YYYY HH24:MI:SS'))
  456. WHERE data_criacao = TO_DATE('11/11/2021 01:10:05', 'DD/MM/YYYY HH24:MI:SS');
  457.  
  458. -- Plano
  459. SELECT preco, numero_de_telas FROM tb_plano WHERE numero_de_telas = (SELECT MAX(numero_de_telas) FROM tb_plano);
  460.  
  461. -- Produtora
  462. SELECT DISTINCT DEREF(midia).id_imdb ID_IMDB FROM tb_tem WHERE produtora = (SELECT REF(P) FROM tb_produtora P WHERE P.cnpj = '12345678912345');
  463. SELECT DISTINCT DEREF(diretor).nome Nome FROM tb_tem WHERE produtora = (SELECT REF(P) FROM tb_produtora P WHERE P.cnpj = '12345678912345');
  464. SELECT nome_fantasia, data_de_criacao FROM tb_produtora WHERE cnpj = '98765432198765';
  465.  
  466. -- Diretor
  467. SELECT DISTINCT DEREF(midia).id_imdb ID_IMDB FROM tb_tem WHERE diretor = (SELECT REF(D) FROM tb_diretor D WHERE D.id_imdb = 'nm0751648');
  468.  
  469. -- Relatórios
  470. SELECT C.column_value Categoria, COUNT(C.column_value) Contagem FROM tb_perfil_midia PM, TABLE(DEREF(PM.midia).categorias) C
  471. WHERE PM.usuario = (SELECT REF(U) FROM tb_usuario U WHERE U.email = 'fernanda-kitz-88@gmail.com') AND nome_perfil = 'Nanda'
  472. GROUP BY C.column_value ORDER BY COUNT(C.column_value) DESC;
  473.  
  474. SELECT SUM(tempo_decorrido) Tempo_Assistido FROM tb_perfil_midia
  475. WHERE usuario = (SELECT REF(U) FROM tb_usuario U WHERE U.email = 'bililalindsay@gmail.com')
  476. AND nome_perfil = 'Dada' AND data_inicio BETWEEN TO_DATE('01/12/2021', 'DD/MM/YYYY') AND TO_DATE('31/12/2021', 'DD/MM/YYYY');
  477.  
  478. SELECT DEREF(midia).id_imdb ID_IMDB, COUNT(DEREF(midia).id_imdb) Contagem FROM tb_perfil_midia
  479. WHERE usuario = (SELECT REF(U) FROM tb_usuario U WHERE U.email = 'fernanda-kitz-88@gmail.com')
  480. AND nome_perfil = 'Nanda' AND data_inicio BETWEEN TO_DATE('01/01/2010', 'DD/MM/YYYY') AND TO_DATE('31/12/2010', 'DD/MM/YYYY')
  481. GROUP BY DEREF(midia).id_imdb;
  482.  
  483. SELECT TRUNC(SUM(tempo_decorrido) / 3600, 2) Horas_Assistidas FROM tb_perfil_midia
  484. WHERE usuario = (SELECT REF(U) FROM tb_usuario U WHERE U.email = 'fernanda-kitz-88@gmail.com')
  485. AND nome_perfil = 'Nanda' AND 'Fantasia' IN (SELECT * FROM TABLE(DEREF(midia).categorias));
  486.  
  487. SELECT AVG(U.numero_perfis()) Numero_Medio_de_Perfis FROM tb_usuario U;
  488.  
  489. SELECT column_value Filme_Mais_Longo FROM TABLE(SELECT nomes FROM tb_filme WHERE duracao = (SELECT MAX(duracao) FROM tb_filme))
  490. FETCH FIRST 1 ROWS ONLY;
  491.  
  492. SELECT column_value Filme_Mais_Curto FROM TABLE(SELECT nomes FROM tb_filme WHERE duracao = (SELECT MIN(duracao) FROM tb_filme))
  493. FETCH FIRST 1 ROWS ONLY;
  494.  
  495. SELECT DEREF(plano).id_plano ID_Plano, COUNT(DEREF(plano).id_plano) Assinantes FROM tb_usuario U
  496. WHERE U.idade() BETWEEN 25 AND 35 GROUP BY DEREF(plano).id_plano ORDER BY COUNT(DEREF(plano).id_plano) DESC;
  497.  
Add Comment
Please, Sign In to add comment