Advertisement
Guest User

Untitled

a guest
Oct 28th, 2018
418
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
MySQL 10.02 KB | None | 0 0
  1.  
  2. CREATE DATABASE cod_claro;
  3. \c cod_claro
  4.  
  5. BEGIN;
  6.  
  7. CREATE TABLE pessoas(
  8.     id SERIAL,
  9.     email VARCHAR(50),
  10.     apelido VARCHAR(20) UNIQUE,
  11.     cidade VARCHAR(30),
  12.     estado CHAR(2),
  13.     PRIMARY KEY(id)
  14. );
  15.  
  16. INSERT INTO pessoas(email, apelido, cidade, estado)
  17. VALUES
  18.     ('modike@gmail.com', 'mdk', 'Fortaleza', 'CE'),
  19.     ('prinsjujuba@gmail.com', 'pjuju', 'Nlogonia', 'NP'),
  20.     ('humberto_bsc@hotmail.com', 'humber', 'Juazeiro', 'CE'),
  21.     ('mike@email.com', 'mike332', 'Juazeiro', 'CE'),
  22.     ('haruto@outlook.com.br','haruto248','Sao Paulo','SP'),
  23.     ('kaito@bol.com', 'kaito481', 'Guarapiri', 'SP'),
  24.     ('ren@outlook.com.br','ren1481','Recife','PA'),
  25.     ('eita@outlook.com', 'tata', 'Riachuelo', 'SE'),
  26.     ('doug_nobrega@yahoo.com', 'doug_n', 'Horizonte', 'CE'),
  27.     ('paulo_mirands@ufc.com', 'paulmirs', 'Teresina', 'PI'),
  28.     ('ieslei_bi@ufc.com', 'iesley_pe', 'Juazeiro do Norte', 'CE'),
  29.     ('kams_fre@fufu.com', 'kamz321', 'Quixada', 'CE'),
  30.     ('ikki_fenix@hotmail.com', 'ikkic', 'Bauru', 'SP'),
  31.     ('joezito44@ufpe.com.br', 'joejoe', 'Natal', 'RN'),
  32.     ('mariaguedes@gmail.com', 'maryguedes5', 'Nova Campina', 'SP'),
  33.     ('tourist@ebay.com', 'tourist', 'Macae', 'RJ'),
  34.     ('jonathan_joestar@yahoo.com', 'jojo', 'Mesquita', 'RJ'),
  35.     ('raquels@gmail.com', 'raquel45', 'Fortaleza', 'CE'),
  36.     ('diogsell@outlook.com' , 'diogo_elis', 'Sao Paulo', 'SP'),
  37.     ('letic_sc@gmail.com.br', 'lsaraiva', 'Morada Nova', 'CE'),
  38.     ('yuyuhakusho@gmail.com', 'yuyuh', 'Massape', 'CE'),
  39.     ('triuviratus@uol.com', 'trinity12', 'Bastos', 'SP'),
  40.     ('jojo_kj@globo.com.br', 'joulyne_kujo22', 'Santa Mariana', 'PR'),
  41.     ('mestramagus@gmail.com', 'mestra', 'Nao-Me-Toque', 'RS'),
  42.     ('koichikun@yahoo.com.br', 'koichi', 'Natal', 'RN'),
  43.     ('calos_henr@hotmail.com', 'mtoseverus', 'Maracanau', 'CE'),
  44.     ('basisi@gmail.com', 'basis54', 'Delta', 'MG'),
  45.     ('luscas42@outlook.com', 'luscass', 'Senador Pompeu', 'CE');
  46.    
  47.    
  48. CREATE TABLE administradores(
  49.     id_pessoa INT,
  50.     PRIMARY KEY(id_pessoa),
  51.     FOREIGN KEY(id_pessoa) REFERENCES pessoas(id)
  52. );
  53.  
  54.  
  55. INSERT INTO administradores
  56. VALUES
  57.     (1),
  58.     (16),
  59.     (23);
  60.  
  61.  
  62. CREATE TABLE instituicoes(
  63.     id SERIAL,
  64.     nome VARCHAR(50) UNIQUE,
  65.     PRIMARY KEY(id)
  66. );
  67.  
  68.  
  69. INSERT INTO instituicoes(nome)
  70. VALUES
  71.     ('UFC'),
  72.     ('IFCE'),
  73.     ('USP'),
  74.     ('UFRJ'),
  75.     ('UPSP'),
  76.     ('ISP'),
  77.     ('UFPI'),
  78.     ('IFPI'),
  79.     ('UFPR'),
  80.     ('UFD'),
  81.     ('UFMG');
  82.  
  83.  
  84. CREATE TABLE estudantes(
  85.     id_pessoa INT,
  86.     id_instituicao INT,
  87.     PRIMARY KEY(id_pessoa),
  88.     FOREIGN KEY(id_pessoa) REFERENCES pessoas(id),
  89.     FOREIGN KEY(id_instituicao) REFERENCES instituicoes(id)
  90. );
  91.  
  92.  
  93. INSERT INTO estudantes
  94. VALUES
  95.     (2, 3),
  96.     (3, 5),
  97.     (4, 6),
  98.     (5, 4),
  99.     (6, 3),
  100.     (7, 1),
  101.     (8, 4),
  102.     (9, 2),
  103.     (10, 1),
  104.     (11, 1),
  105.     (12, 2),
  106.     (13, 6),
  107.     (14, 4),
  108.     (15, 3),
  109.     (17, 1),
  110.     (18, 4),
  111.     (19, 5),
  112.     (20, 6),
  113.     (21, 2),
  114.     (22, 2),
  115.     (24, 3),
  116.     (25, 4),
  117.     (26, 3),
  118.     (27, 6),
  119.     (28, 5);
  120.  
  121.  
  122. CREATE TABLE problemas(
  123.     id SERIAL,
  124.     titulo VARCHAR(50) UNIQUE,
  125.     descricao VARCHAR(3000),
  126.     entrada VARCHAR(500),
  127.     saida VARCHAR(500),
  128.     pontos INT NOT NULL,
  129.     id_adm INT,
  130.     PRIMARY KEY(id),
  131.     FOREIGN KEY(id_adm) REFERENCES administradores(id_pessoa)
  132. );
  133.  
  134.  
  135. INSERT INTO problemas (titulo, descricao, pontos, id_adm)
  136. VALUES
  137.     ('Hello world!', 'Imprima a mensagem hello world.', 10,1),
  138.     ('Fibbo','Calcule fibbonacci de N.',100,1),
  139.     ('Mais Perto','Descubra a cidade mais perto.',250,1),
  140.     ('Maior Subsequencia Comum','Diga qual maior de subsequencia comum.',250,1),
  141.     ('Menor Elemento','Diga qual menor elemento do vetor.',50,16),
  142.     ('Soma de Primos','Calcule o somatorio de todos os primos ate N.',200,1),
  143.     ('Colonia de Formigas', 'Calcule o LCA entre os pares.',200,23),
  144.     ('Josephus', 'Diga o resultado do jogo de josephus.', 100,23),
  145.     ('Busca Binaria', 'Econtre o elemento em logN.',100,1),
  146.     ('Cruzamento de Cubos','Diga se cada cubo se intersecta.',200,1),
  147.     ('Mania de Par','Encontre o menor caminho par ate F.', 250,1),
  148.     ('Diga se é Palindromo','Diga se P é palindromo.', 50 ,16),
  149.     ('Area da Construcao','Calcule a area do poligono P.', 300,1),
  150.     ('Marcando Consulta','Calcule o maximo de consultas para atender.',250,1),
  151.     ('Qual Estrutura', 'Diga se é pilha, fila ou heap.',150,16),
  152.     ('Rota de Caminhao','Calcule menor distancia entre todos pares.',300,1),
  153.     ('Quantos Grupos', 'Diga o minimo de grupos entre elementos.',200,23),
  154.     ('Distancia Entre Pontos', 'Encontre os dois pontos mais proximos.',300,1),
  155.     ('Maiusculador', 'Imprima a string P em maiuscula.',250,23),
  156.     ('MSC', 'Diga o tamanho da maior subsequencia crescente.',100,23),
  157.     ('Seg Tree', 'Diga qual sinal do produto entre intervalos',200,1),
  158.     ('Capoeira', 'Inverta o vetor V dado',50, 16),
  159.     ('Perimetro', 'Calcule o perimetro do circulo', 50,1);
  160.  
  161. --ALTER SEQUENCE problemas_id_seq RESTART WITH 1;
  162.    
  163.  
  164. CREATE TABLE submissoes(
  165.     id SERIAL,
  166.     codigo VARCHAR(5000),
  167.     situacao VARCHAR(20),
  168.     data_submissao DATE,
  169.     tempo INT,
  170.     id_estudante INT,
  171.     id_problema INT,
  172.     PRIMARY KEY(id),
  173.     FOREIGN KEY(id_estudante) REFERENCES estudantes(id_pessoa),
  174.     FOREIGN KEY(id_problema) REFERENCES problemas(id)
  175. );
  176.  
  177.  
  178. INSERT INTO submissoes (situacao, codigo, data_submissao, id_estudante, id_problema)
  179. VALUES
  180.     ('accepted', 'printf(hello)', '22-12-2017', 4, 3),
  181.     ('accepted', 'cout<<n-2', '22-12-2017', 2, 7),
  182.     ('accepted', 'solve(x)', '22-12-2017', 20, 15),
  183.     ('accepted', 'printf(hello)', '22-12-2017', 5, 9),
  184.     ('run time error', 'while(x>2) cout << x+3', '15-08-2018', 2, 5),
  185.     ('presentation error', 'console.log(sqtr(u+1))', '14-12-2018', 24, 16),
  186.     ('time limit exceeded', 'printf(hello)', '13-12-2017', 3, 8),
  187.     ('wrong answer', 'printf(hello world)', '21-12-2017', 4, 3),
  188.    
  189.     ('accepted', 'printf(hello)', '22-12-2017', 15, 22),
  190.     ('accepted', 'cout<< n ** n', '22-12-2017', 19, 1),
  191.     ('accepted', 'print(5y + 7t)', '22-12-2017', 19, 2),
  192.     ('accepted', 'cout << Dijskstra(n) << endl', '22-12-2017', 20, 3),
  193.     ('accepted', 'cout<<n-2', '22-12-2017', 18, 4),
  194.     ('accepted', 'cout<<n-554', '22-12-2017', 17, 5),
  195.     ('accepted', 'cout<<6464', '22-12-2017', 15, 6),
  196.     ('accepted', 'cout<<mnor_ares', '22-12-2017', 17, 7),
  197.     ('accepted', 'cout<<n-66', '22-12-2017', 24, 8),
  198.     ('accepted', 'solve(x)', '22-12-2017', 17, 20),
  199.     ('accepted', 'printf(hello)', '22-12-2017', 18, 21),
  200.     ('run time error', 'while(x>2) cout << x+3', '15-08-2018', 18, 22),
  201.     ('presentation error', 'console.log(sqtr(u+1))', '14-12-2018', 19, 23),
  202.     ('time limit exceeded', 'goto 45', '13-12-2017', 25, 22),
  203.     ('wrong answer', 'printf(hello world)', '21-12-2017', 20, 23),
  204.    
  205.     ('run time error', 'while(x>2) cout << x+3', '15-08-2018', 4, 3),
  206.     ('presentation error', 'console.log(sqtr(u+1))', '14-12-2018', 8, 1),
  207.     ('time limit exceeded', 'printf(hello)', '13-12-2017', 9, 10),
  208.     ('wrong answer', 'printf(hello world)', '21-12-2017', 10, 11),
  209.     ('accepted', 'printf(hello)', '22-12-2017', 11, 12),
  210.     ('accepted', 'cout<<n-2', '22-12-2017', 12, 13),
  211.     ('accepted', 'solve(x)', '22-12-2017', 14, 15),
  212.     ('accepted', 'printf(hello)', '22-12-2017', 20, 21),
  213.     ('accepted', 'cout<<n-2', '22-12-2017', 21, 22),
  214.     ('accepted', 'solve(x)', '22-12-2017', 22, 23),
  215.    
  216.     ('run time error', 'while(x>2) cout << x+3', '15-08-2018', 26, 3),
  217.     ('presentation error', 'console.log(sqtr(u+1))', '14-12-2018', 25, 1),
  218.     ('time limit exceeded', 'printf(hello)', '13-12-2017', 24, 10),
  219.     ('wrong answer', 'printf(hello world)', '21-12-2017', 26, 11),
  220.     ('accepted', 'printf(hello)', '24-09-2017', 22, 12),
  221.     ('accepted', 'cout<<n-2', '26-05-2018', 21, 13),
  222.     ('accepted', 'solve(x)', '13-03-2018', 20, 15),
  223.     ('accepted', 'printf(hello)', '05-08-2017', 19, 21),
  224.     ('accepted', 'cout<<n-2', '14-04-2017', 18, 22),
  225.     ('accepted', 'solve(x)', '11-11-2017', 22, 23);
  226.  
  227.  
  228. CREATE TABLE categorias(
  229.     id SERIAL PRIMARY KEY,
  230.     descricao VARCHAR(50)
  231. );
  232.  
  233.  
  234. INSERT INTO categorias(descricao)
  235. VALUES
  236.     ('iniciante'),
  237.     ('estrutura'),
  238.     ('AD HOC'),
  239.     ('matematica'),
  240.     ('programacao dinamica'),
  241.     ('guloso'),
  242.     ('grafo');
  243.    
  244.  
  245. CREATE TABLE problema_categoria(
  246.     id_problema INT,
  247.     id_categoria INT,
  248.     PRIMARY KEY(id_problema, id_categoria),
  249.     FOREIGN KEY(id_problema) REFERENCES problemas(id),
  250.     FOREIGN KEY(id_categoria) REFERENCES categorias(id)
  251. );
  252.  
  253.  
  254. INSERT INTO problema_categoria
  255. VALUES
  256.     (1,1),(2,4),(2,5),(3,6),(3,5),(3,7),(4,5),(5,1),(5,2),(6,4),(6,5),(7,7),(7,5),(8,2),(8,1),(9,3),
  257.     (10,4),(10,3),(11,7),(11,5),(11,2),(12,1),(12,3),(13,4),(14,6),(15,2),(16,7),(16,3),(17,2),(18,5),(18,4),(19,1),(19,3),
  258.     (20,2),(20,5),(21,2),(21,5),(22,1),(23,1),(23,4);
  259.    
  260.  
  261. ROLLBACK;
  262.  
  263. --todas questoes da categoria iniciante--
  264. SELECT p.titulo
  265. FROM problemas p, problema_categoria re, categorias cat
  266. WHERE p.id = re.id_problema AND re.id_categoria = cat.id AND cat.descricao = 'iniciante';
  267.  
  268.  
  269. --pontuacao de cada usuario--
  270. SELECT pe.apelido AS nick_usuario, SUM(pr.pontos) AS total_de_pontos
  271. FROM pessoas pe RIGHT JOIN estudantes e ON pe.id = e.id_pessoa
  272.      LEFT JOIN submissoes s ON e.id_pessoa = s.id_estudante
  273.      LEFT JOIN problemas pr ON (s.id_problema = pr.id AND s.situacao = 'accepted')
  274. GROUP BY pe.apelido
  275. ORDER BY SUM(pr.pontos) IS NULL, total_de_pontos DESC;
  276.  
  277.  
  278. --numero de usuarios por instituicao--
  279. SELECT inst.nome, (SELECT COUNT(*) FROM estudantes est WHERE inst.id = est.id_instituicao) AS qtd_estudantes
  280. FROM instituicoes inst
  281. ORDER BY qtd_estudantes DESC;
  282.  
  283.  
  284. --questoes da categoria matematica ordenados pelos pontos--
  285. SELECT prob.titulo, prob.pontos
  286. FROM problemas prob
  287.     INNER JOIN problema_categoria rel ON prob.id = rel.id_problema
  288.     INNER JOIN categorias cat ON rel.id_categoria = cat.id
  289. WHERE cat.descricao = 'matematica'
  290. ORDER BY prob.pontos DESC;
  291.  
  292.  
  293. --intituicoes com mais alunos registrados--
  294. SELECT inst.nome
  295. FROM instituicoes inst, estudantes est
  296. WHERE inst.id = est.id_instituicao
  297. GROUP BY inst.nome
  298. HAVING COUNT(*) >= ALL (SELECT COUNT(*) FROM instituicoes INNER JOIN estudantes ON id = id_instituicao GROUP BY id);
  299.  
  300.  
  301. --quais estudantes nao resolveram o problema 1--
  302. SELECT pe.apelido
  303. FROM pessoas pe INNER JOIN estudantes est ON pe.id = est.id_pessoa
  304. WHERE NOT EXISTS (SELECT * FROM submissoes sub WHERE sub.id_estudante = est.id_pessoa AND sub.id_problema = 1);
  305.  
  306.    
  307. --quais usuarios sao do Ceara--
  308. SELECT pe.apelido
  309. FROM pessoas pe
  310. WHERE pe.id IN (SELECT id FROM pessoas WHERE pe.estado = 'CE');
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement