Skip to content

Instantly share code, notes, and snippets.

@Camilotk
Created October 13, 2022 03:07
Show Gist options
  • Save Camilotk/1ce70e4c847a3a239d0388bb90419844 to your computer and use it in GitHub Desktop.
Save Camilotk/1ce70e4c847a3a239d0388bb90419844 to your computer and use it in GitHub Desktop.
# Questão 1
SELECT *
FROM (SELECT nome_cantor, count(*) as num_gravacoes
FROM gravacao
INNER JOIN cantor c on gravacao.cod_cantor = c.cod_cantor
GROUP BY nome_cantor) q1
WHERE num_gravacoes = (SELECT min(gravacoes) FROM (SELECT nome_cantor, count(*) as gravacoes
FROM gravacao
INNER JOIN cantor c on gravacao.cod_cantor = c.cod_cantor
GROUP BY nome_cantor) q2);
# Questão 2
SELECT *
FROM (SELECT nome_cantor, count(nome_gravadora) as num_gravadoras
FROM (SELECT distinct nome_gravadora, nome_cantor
FROM gravacao
INNER JOIN gravadora g on gravacao.cod_gravadora = g.cod_gravadora
INNER JOIN cantor c on gravacao.cod_cantor = c.cod_cantor
GROUP BY nome_cantor, nome_gravadora) q3
GROUP BY nome_cantor, nome_gravadora) q4
GROUP BY nome_cantor, num_gravadoras
HAVING count(*) > 1;
# Questão 3
SELECT nome_cantor, duracao_media
FROM (SELECT nome_cantor, AVG(duracao) as duracao_media
FROM (SELECT nome_cantor, duracao
FROM gravacao
LEFT JOIN cantor c on gravacao.cod_cantor = c.cod_cantor
LEFT JOIN musica m on gravacao.cod_musica = m.cod_musica) q1
GROUP BY nome_cantor) q1
WHERE duracao_media = (SELECT MAX(duracao_media)
FROM (SELECT AVG(duracao) as duracao_media
FROM (SELECT nome_cantor, duracao
FROM gravacao
LEFT JOIN cantor c on gravacao.cod_cantor = c.cod_cantor
LEFT JOIN musica m on gravacao.cod_musica = m.cod_musica) q2
GROUP BY nome_cantor) q3);
# Questão 4
SELECT distinct nome_cantor
FROM cantor
WHERE nome_cantor NOT IN (SELECT distinct nome_cantor
FROM gravacao
INNER JOIN cantor c2 on gravacao.cod_cantor = c2.cod_cantor
LEFT JOIN gravadora g2 on gravacao.cod_gravadora = g2.cod_gravadora
WHERE nome_gravadora LIKE 'Sony');
# Questão 5
SELECT nome_cantor, titulo, data_gravacao
FROM gravacao
RIGHT JOIN cantor c on c.cod_cantor = gravacao.cod_cantor
RIGHT JOIN musica m on gravacao.cod_musica = m.cod_musica
WHERE YEAR(data_gravacao) = 2004;
# Questão 6
SELECT nome_cantor, MAX(data_gravacao) FROM (select nome_cantor, data_gravacao
from gravacao
inner join cantor c on gravacao.cod_cantor = c.cod_cantor
group by nome_cantor, cod_gravacao, c.cod_cantor
ORDER BY nome_cantor) q1
GROUP BY nome_cantor
ORDER BY MAX(data_gravacao) DESC;
# Questão 7
SELECT nome_pessoa, numero_residencial, numero_comercial, celular
FROM pessoa
RIGHT JOIN (SELECT numero as numero_residencial, cod_pessoa FROM fone WHERE tipo = 'R') as n1 ON pessoa.cod_pessoa = n1.cod_pessoa
RIGHT JOIN (SELECT numero as numero_comercial, cod_pessoa FROM fone WHERE tipo = 'C') as n2 ON pessoa.cod_pessoa = n2.cod_pessoa
RIGHT JOIN (SELECT numero as celular, cod_pessoa FROM fone WHERE tipo = 'L') as n3 ON pessoa.cod_pessoa = n3.cod_pessoa;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment