Questão de Banco de Dados — SQL — Quadrix 2025
- Código
- qg598672
- Banca
- Quadrix
- Órgão
- CRM-MS
- Ano
- 2025
- Nível
- Superior
- Cargo
- Analista de Informática


- CCerto
- EErrado


GabaritoC — Certo
Gabarito: CERTO (letra C). O comando apresentado utiliza a estrutura NOT IN com uma subconsulta, que é exatamente a forma correta de encontrar médicos que participaram de congressos em 2023, mas não em 2024. A lógica é: selecionar os médicos cujo código está na tabela de participações de 2023 e, simultaneamente, não está na tabela de participações de 2024.
A consulta SQL para resolver esse problema segue o padrão de usar uma subconsulta com NOT IN (ou NOT EXISTS). A estrutura básica é:
SELECT nome
FROM medico
WHERE codigo IN (SELECT codigo_medico FROM participacao WHERE ano = 2023)
AND codigo NOT IN (SELECT codigo_medico FROM participacao WHERE ano = 2024);Essa consulta funciona em duas etapas: primeiro, identifica todos os médicos que participaram de congressos em 2023; depois, filtra esse conjunto, removendo aqueles que também participaram em 2024. O resultado final são apenas os médicos que participaram em 2023 e não em 2024.
A alternativa NOT IN é particularmente útil quando se deseja excluir um conjunto de valores de outro. No entanto, é importante lembrar que NOT IN pode ter comportamento inesperado se a subconsulta retornar valores nulos (NULL). Nesse caso, o resultado da consulta pode ser vazio, pois a comparação com NULL não é verdadeira nem falsa. Para evitar esse problema, muitos profissionais preferem usar NOT EXISTS, que é semanticamente equivalente, mas mais seguro em relação a valores nulos.
A pegadinha dessa questão está em reconhecer que a combinação de IN e NOT IN com subconsultas é a forma correta de expressar a diferença entre conjuntos. O candidato pode confundir com EXCEPT (ou MINUS no Oracle), que também realiza a diferença entre conjuntos, mas com sintaxe diferente. No entanto, a estrutura apresentada no comando é válida e atende ao requisito do enunciado.
O comando está correto. Ele utiliza a estrutura NOT IN com uma subconsulta para encontrar os médicos que participaram de congressos em 2023, mas não em 2024. A lógica é: selecionar os médicos cujo código está na tabela de participações de 2023 e, simultaneamente, não está na tabela de participações de 2024. Essa é uma forma clássica e válida de realizar a diferença entre conjuntos em SQL.
Para questões de diferença entre conjuntos, lembre-se de que NOT IN e NOT EXISTS são equivalentes, mas NOT EXISTS é mais seguro com valores nulos. Na prova, verifique se a subconsulta pode retornar NULL; se sim, prefira NOT EXISTS.
Gabarito: letra C
Link permanente: /questoes/qg598672