Imagine um sistema de banco de dados MySQL que mantém regis...

Próximas questões
Com base no mesmo assunto
Q2447129 Banco de Dados
Imagine um sistema de banco de dados MySQL que mantém registros de Processos, Juízes e Audiências. A tabela Processos inclui ProcessoID, JuizID, TipoProcesso e DataInicio. A tabela Juízes contém JuizID, NomeJuiz e Vara. A tabela Audiências possui AudienciaID, ProcessoID, DataAudiencia, e Resultado, em que Resultado pode ser 'Condenação', 'Absolvição' ou 'Adiado'.
Você foi designado para desenvolver uma consulta SQL que forneça um relatório detalhado dos juízes, incluindo NomeJuiz, Vara, a quantidade de processos que cada um possui por TipoProcesso, e a quantidade de audiências resultando em 'Condenação'. Os juízes devem ser listados mesmo que não tenham processos ou audiências associados.

Qual instrução SQL completa o final da seguinte consulta para atender a esse requisito? 

SELECTJuízes.NomeJuiz, Juízes.Vara, Processos.TipoProcesso, COUNT(DISTINCT Processos.ProcessoID) AS QuantidadeProcessos, COUNT(Audiencias.AudienciaID) AS Condenações FROM Juízes LEFT JOIN Processos ON Juízes.JuizID = Processos.JuizID LEFT JOIN Audiencias ON Processos.ProcessoID = Audiencias.ProcessoID AND Audiencias.Resultado = 'Condenação'  GROUP BY Juízes.NomeJuiz, Juízes.Vara, Processos.TipoProcesso _____________________;
Alternativas

Gabarito comentado

Confira o gabarito comentado por um dos nossos professores

A alternativa B é a correta.

Vamos entender a razão por trás dessa escolha e também analisar por que as outras alternativas estão incorretas.

Primeiramente, a questão aborda conceitos importantes de SQL, especificamente relacionados a JOINs, funções de agregação (como COUNT) e a cláusula GROUP BY e HAVING. Para responder a essa questão, é necessário entender como essas funcionalidades trabalham em conjunto para gerar o relatório detalhado solicitado.

O enunciado pede que listemos todos os juízes, mesmo se não tiverem processos ou audiências associadas, e que forneçamos a quantidade de processos por tipo e a quantidade de audiências que resultaram em 'Condenação'.

No trecho fornecido da consulta, utiliza-se LEFT JOIN para garantir que todos os juízes sejam listados, mesmo se não houverem registros correspondentes nas tabelas Processos e Audiencias. O uso de COUNT com DISTINCT para processos e com uma condição específica para audiências ('Condenação') é adequado.

Agora, vejamos cada alternativa:

Alternativa A: HAVING QuantidadeProcessos > 0
Esta alternativa exigiria que todos os juízes tivessem pelo menos um processo, o que contraria o requisito de listar todos os juízes, mesmo aqueles sem processos.

Alternativa B: HAVING Condenações > 0
Esta é a alternativa correta. Ela filtra os juízes para mostrar apenas aqueles que têm pelo menos uma audiência resultando em 'Condenação'. Como a questão pede especificamente a quantidade de audiências com 'Condenação', este filtro faz sentido.

Alternativa C: HAVING Audiencias.DataAudiencia >= '2020-01-01'
Esta alternativa introduz uma condição de data que não foi solicitada no enunciado. Além disso, ela não atende ao requisito de listar todos os juízes, independentemente de terem audiências ou não.

Alternativa D: HAVING Juízes.Vara = 'Criminal'
Esta alternativa restringe os resultados aos juízes de uma vara específica ('Criminal'), o que não foi solicitado no enunciado. A consulta precisa ser abrangente para incluir todos os juízes.

Em resumo, a alternativa B é a correta porque atende ao requisito de filtrar os juízes que possuem audiências resultando em 'Condenação', enquanto ainda permite listar todos os juízes, mesmo aqueles sem processos ou audiências associadas.

Clique para visualizar este gabarito

Visualize o gabarito desta questão clicando no botão abaixo