Questão FC670750
O Conselho Regional de Medicina Veterinária do Estado de Goiás (CRMV‑GO) mantinha um banco de dados relacional denominado CRMV_GO, que registrava veterinários, especialidades, clín
Linguagem SQL
QUADRIX · 2025
O Conselho Regional de Medicina Veterinária do Estado de Goiás (CRMV‑GO) mantinha um banco de dados relacional denominado CRMV_GO, que registrava veterinários, especialidades, clínicas e atendimentos. As principais tabelas estão dispostas a seguir.
VETERINARIO (id_vet, nome, crmv, data_inscricao, id_especialidade, ativo) ESPECIALIDADE (id_especialidade, descricao) CLINICA (id_clinica, nome_clinica, cidade) ATENDIMENTO (id_atendimento, id_vet, id_clinica, data_atendimento, status)
Com base nessa situação hipotética e no uso do comando SELECT no banco de dados CRMV_GO, julgue o item seguinte.
O comando a seguir apresenta corretamente os veterinários que possuem mais atendimentos em clínicas de Brasília do que em Goiânia. SELECT v.nome FROM VETERINARIO v INNER JOIN ATENDIMENTO a ON v.id_vet = a.id_vet INNER JOIN CLINICA c ON a.id_clinica = c.id_clinica WHERE c.cidade = 'Brasília' GROUP BY v.id_vet HAVING COUNT(a.id_atendimento) > ( SELECT COUNT(a2.id_atendimento) FROM ATENDIMENTO a2 INNER JOIN CLINICA c2 ON a2.id_clinica = c2.id_clinica WHERE c2.cidade = 'Goiânia' );
Mostrar resposta e comentário
Gabarito
Errado
Comentário do professor
A afirmação foi julgada ERRADO porque a subconsulta não está correlacionada ao veterinário externo. Assim, ela calcula a quantidade total de atendimentos em Goiânia por todos os veterinários, e não os atendimentos de cada veterinário comparados individualmente.
Na prática isso faz a comparação entre \( \text{COUNT}(a.id\_atendimento) \) de um único veterinário em Brasília e a soma de atendimentos de toda a categoria em Goiânia, o que é logicamente incorreto e quase sempre falso.
O conserto é adicionar a correlação a2.id_vet = v.id_vet na subconsulta, e obedecer a sintaxe padrão agrupando campos selecionados. Por exemplo: \( \text{HAVING COUNT}(a.id\_atendimento) > (\text{SELECT COUNT}(a2.id\_atendimento) \ldots WHERE c2.cidade='Goiânia' AND a2.id\_vet = v.id\_vet) \) e usar \(GROUP BY\ v.id\_vet,\ v.nome\).
Conteúdo do catálogo FC Concursos · Atualizado em