Questão de Banco de Dados — SQL — Quadrix 2023
- Código
- qg025996
- Banca
- Quadrix
- Órgão
- CREA-GO
- Ano
- 2023
- Nível
- Superior
- Cargo
- Analista de Área - T.I

- CCerto
- EErrado

GabaritoE — Errado
Gabarito: ERRADO (letra E). A consulta não retorna "somente os dados do engenheiro que tirou a nota mais alta em todos os cursos"; ela retorna, para cada engenheiro, o registro do curso com a data de término mais recente (e a nota correspondente), filtrando apenas os cursos já concluídos. O erro está em confundir a lógica de "último curso concluído" com a de "maior nota".
A consulta usa uma subconsulta correlacionada para identificar, para cada engenheiro, a data de término máxima (MAX(ec1.data_fim)) entre seus cursos concluídos. O JOIN principal então seleciona apenas o registro de engenheiro_curso que corresponde a essa data máxima para cada engenheiro. Ou seja, o resultado é um registro por engenheiro, contendo os dados do seu curso mais recentemente concluído — não a maior nota.
Vamos decompor a consulta para entender exatamente o que ela faz:
Subconsulta t1: Agrupa por crea (identificador do engenheiro) e calcula MAX(ec1.data_fim) — a data de término mais recente entre os cursos concluídos (data_fim is not null) de cada engenheiro.
Junção principal: Faz INNER JOIN entre engenheiro_curso e a subconsulta t1 nas colunas crea e data_fim. Isso garante que, para cada engenheiro, apenas o registro com a data de término máxima seja selecionado.
Junção com curso: Busca a descrição do curso correspondente.
Projeção: Retorna crea, data_fim, nota (arredondada) e classificacao.
Portanto, a consulta retorna, para cada engenheiro, o seu curso mais recentemente concluído, com a respectiva nota. Não há nenhuma lógica de comparação de notas entre engenheiros ou entre cursos. A afirmação do enunciado é incorreta.
A afirmação diz que a consulta retorna "somente os dados do engenheiro que tirou a nota mais alta em todos os cursos". Isso está errado por dois motivos principais:
Não há comparação de notas: A consulta não utiliza MAX(nota), ORDER BY nota DESC, ou qualquer função de agregação sobre a coluna nota. A única função de agregação é MAX(data_fim), que identifica o curso mais recente, não o de maior nota.
Retorna um registro por engenheiro: A consulta retorna dados de todos os engenheiros que possuem pelo menos um curso concluído, não apenas de um único engenheiro. Para cada um, ela traz o curso com a data de término mais recente.
Para retornar o engenheiro com a maior nota em todos os cursos, a consulta precisaria, por exemplo, usar MAX(nota) e depois selecionar o engenheiro correspondente, ou usar ORDER BY nota DESC com LIMIT 1 (ou FETCH FIRST). Nenhuma dessas lógicas está presente.
Gabarito: letra E (ERRADO).
Link permanente: /questoes/qg025996