Questão de Banco de Dados — Consultas e Comandos em SQL — Quadrix 2024
- Código
- qa630753
- Banca
- Quadrix
- Órgão
- CFP
- Ano
- 2024
- Cargo
- Ana Tec ( )
- CCerto
- EErrado
GabaritoE — Errado
Gabarito: ERRADO (letra E). A instrução SQL apresentada não retorna os nomes dos psicólogos que concluíram o curso com o maior número de inscritos, pois a subconsulta mais interna seleciona o curso de maior duração (MAX(duracao)), e não o curso com mais inscrições. O critério de seleção está trocado: a consulta busca o curso mais longo, não o mais procurado.
A questão cobra a interpretação de uma consulta SQL com subconsultas aninhadas. O comando SELECT é a base da linguagem de consulta estruturada, permitindo recuperar dados de uma ou mais tabelas por meio de cláusulas como WHERE, JOIN e subconsultas. A lógica da consulta apresentada é a seguinte: primeiro, a subconsulta mais interna calcula a duração máxima entre todos os cursos (SELECT MAX(duracao) FROM curso). Em seguida, a subconsulta intermediária seleciona o id_curso cuja duração é igual a esse valor máximo (WHERE duracao = (SELECT MAX(duracao) FROM curso)). Depois, outra subconsulta junta as tabelas inscricao e certificado para encontrar os psicólogos inscritos nesse curso específico que possuem certificado. Por fim, a consulta externa retorna os nomes desses psicólogos.
O erro central está na escolha do critério de seleção do curso. O enunciado pede o curso com o maior número de inscritos, ou seja, aquele que possui mais registros na tabela INSCRICAO. Para isso, seria necessário contar as inscrições por curso (COUNT(*)) e selecionar o curso com o maior valor. A consulta, no entanto, seleciona o curso com a maior duração, que é um atributo da tabela CURSO e não tem relação direta com a quantidade de inscrições. Um curso pode ser o mais longo em horas e ter poucos inscritos, enquanto um curso curto pode ter muitos. Portanto, a consulta não atende ao que foi pedido.
Para ilustrar, imagine que existam dois cursos: "Psicologia Clínica" com duração de 100 horas e 5 inscritos, e "Psicologia Organizacional" com duração de 200 horas e 2 inscritos. A consulta apresentada selecionaria o curso de 200 horas (o mais longo) e retornaria os psicólogos inscritos nele, ignorando o curso com mais inscrições (o de 100 horas). Isso demonstra claramente a divergência entre o que a consulta faz e o que o enunciado pede.
A pegadinha da banca está em confundir o critério de seleção: trocar "maior número de inscritos" por "maior duração". O candidato que não analisar a subconsulta com atenção pode assumir que a consulta está correta, pois a estrutura geral parece plausível. No entanto, a chave está na subconsulta mais interna, que define qual curso será considerado. É essencial verificar se o critério usado corresponde ao que foi solicitado no enunciado.
Guarde a distinção entre os critérios de seleção: para encontrar o curso com mais inscritos, é necessário usar uma função de agregação (COUNT) e comparar os totais; para encontrar o curso mais longo, basta usar MAX sobre a coluna de duração. É exatamente essa diferença que separa a consulta correta da incorreta.
A instrução SQL está incorreta porque a subconsulta mais interna seleciona o curso com a maior duração (MAX(duracao)), e não o curso com o maior número de inscritos. Para atender ao enunciado, seria necessário contar as inscrições por curso e selecionar o curso com o maior total, por exemplo, usando COUNT(*) e GROUP BY.
Gabarito: ERRADO (letra E).
Link permanente: /questoes/qa630753