Pular para o conteúdo principal

Questão de Banco de Dados — SQL — CESPE / CEBRASPE 2022

Banco de DadosSQL
Código
ce147340
Banca
CESPE / CEBRASPE
Órgão
TCE-RJ
Ano
2022
Nível
Superior
Cargo
Analista de Controle Externo
Tendo como referência as informações precedentes, julgue o item subsecutivo.O comando SQL a seguir tem a sintaxe correta para obter o código dos cursos e o valor médio do salário dos professores, mas mostrando apenas aqueles cursos cuja média do salário dos seus professores é inferior a 5.000 reais.Select c.cod_curso, avg (salario)from contrato c, professor pwhere c.cpf_professor = p.cpf_professorand avg (salario) < 5000;
  1. CCerto
  2. EErrado
Revelar gabarito e comentário

GabaritoE — Errado

Comentário gerado por IA. É um apoio ao estudo, ancorado em fontes, mas pode conter imprecisões — confira sempre na fonte oficial (lei, súmula, edital e gabarito da banca). Encontrou um erro? Use “Reportar”.

SQL – Cláusulas WHERE e HAVING

ERRADO. O comando SQL apresentado contém dois erros que o tornam inválido: (1) a função de agregação AVG(salario) é usada na cláusula WHERE, o que é proibido, pois WHERE filtra linhas individuais antes do agrupamento; (2) não há cláusula GROUP BY c.cod_curso, necessária para que AVG(salario) seja calculada por curso. A forma correta seria:

SELECT c.cod_curso, AVG(salario)
FROM contrato c, professor p
WHERE c.cpf_professor = p.cpf_professor
GROUP BY c.cod_curso
HAVING AVG(salario) < 5000;

A banca testa o conhecimento da ordem de execução do SQL: FROM → WHERE → GROUP BY → HAVING → SELECT → ORDER BY. A função de agregação só pode aparecer na cláusula HAVING (após GROUP BY) ou no SELECT, nunca no WHERE. Portanto, a afirmativa de que a sintaxe está correta é falsa.

  1. 1FROM
  2. 2WHERE
  3. 3GROUP BY
  4. 4HAVING
  5. 5SELECT
  6. 6ORDER BY
LEVEL · soulevel.com.br
NÃO CAIA NESSA!

O candidato pode achar que AVG(salario) < 5000 funciona no WHERE, mas isso viola a regra de que WHERE não pode conter funções de agregação. A banca explora exatamente essa confusão entre filtro de linhas (WHERE) e filtro de grupos (HAVING).

ERRADO.

Link permanente: /questoes/ce147340