Questão de Banco de Dados — MySQL — INSTITUTO AOCP 2025
Banco de Dados›MySQL
Código
qg539066
Banca
INSTITUTO AOCP
Órgão
IF-MS
Ano
2025
Nível
Superior
Cargo
Analista de Tecnologia da Informação
Considere o seguinte comando SQL, aplicado a uma base de dados de funcionários no MySQL:Com base nesse cenário, assinale a alternativa que descreve corretamente o comportamento da consulta.
AA consulta retorna apenas os funcionários admitidos após 2020 que ocupam o cargo de analista e professor, agrupados pela média salarial de cada faixa.
BA consulta exibe nome, salário e faixa de renda de analistas e professores admitidos até 2020, ordenando pela faixa de renda e salário decrescente.
CA cláusula CASE realiza uma filtragem nos dados, removendo os funcionários da faixa “Baixa Renda” da tabela.
DA consulta atualiza os salários dos funcionários de acordo com a faixa salarial calculada pela cláusula CASE.
EA função YEAR (data_admissao) retorna o mês de admissão dos funcionários e é usada para filtrar quem foi contratado após 2020.
Revelar gabarito e comentário▾
GabaritoB — A consulta exibe nome, salário e faixa de renda de analistas e professores admitidos até 2020, ordenando pela faixa de renda e salário decrescente.
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”.
Comportamento de consulta SQL com CASE e YEAR no MySQL
Gabarito: letra B. A consulta exibe nome, salário e faixa de renda de analistas e professores admitidos até 2020, ordenando pela faixa de renda e salário decrescente. A cláusula CASE cria uma coluna calculada (faixa de renda) com base no salário, e a função YEAR(data_admissao) extrai o ano da data de admissão para filtrar os registros — é exatamente essa combinação de filtro, cálculo e ordenação que a alternativa correta descreve.
A consulta SQL apresentada combina várias cláusulas que atuam em conjunto para transformar e filtrar os dados. O comando SELECT projeta as colunas nome, salário e uma expressão calculada pela cláusula CASE, que classifica cada funcionário em uma faixa de renda (por exemplo, "Baixa Renda", "Média Renda", "Alta Renda") conforme o valor do salário. A cláusula WHERE filtra as linhas antes do agrupamento, usando a função YEAR(data_admissao) para selecionar apenas funcionários admitidos até 2020 (YEAR(data_admissao) <= 2020). A cláusula ORDER BY ordena o resultado final pela faixa de renda e, em seguida, pelo salário em ordem decrescente.
É fundamental entender que a cláusula CASE não filtra nem atualiza dados — ela apenas cria uma coluna derivada no resultado da consulta. A filtragem é feita exclusivamente pela cláusula WHERE, e a atualização de dados seria feita por um comando UPDATE, não por um SELECT. A função YEAR() retorna o ano de uma data, não o mês. Esses são os pontos centrais que diferenciam as alternativas.
Na prática, imagine uma tabela com funcionários: João (salário 1500, admitido em 2019), Maria (salário 3500, admitido em 2021), Pedro (salário 5000, admitido em 2018). A consulta filtraria João e Pedro (admitidos até 2020), calcularia suas faixas (João: Baixa, Pedro: Alta) e os ordenaria pela faixa e depois pelo salário decrescente — Pedro viria antes de João. Maria seria excluída por ter sido admitida após 2020.
A pegadinha da banca está em confundir o papel de cada cláusula: CASE como filtro ou atualização, YEAR como mês, e a inversão do operador de comparação (até 2020 vs. após 2020). Guarde a fronteira: WHERE filtra, CASE calcula, ORDER BY ordena, YEAR extrai o ano — é exatamente nesses papeis que as alternativas se dividem.
1WHERE filtra
2CASE calcula
3ORDER BY ordena
4YEAR extrai o ano
LEVEL · soulevel.com.br
Alternativa A — ❌ Incorreta
Afirma que a consulta retorna funcionários admitidos após 2020 e que agrupa pela média salarial. Há dois erros: o filtro é até 2020 (YEAR(data_admissao) <= 2020), não após, e não há cláusula GROUP BY nem função de agregação (AVG) na consulta — a consulta apenas projeta e ordena, sem agrupar.
Alternativa B — ✅ Correta ⟵ GABARITO
Descreve corretamente o comportamento: exibe nome, salário e faixa de renda (coluna calculada pelo CASE), filtra analistas e professores admitidos até 2020 (WHERE com YEAR <= 2020), e ordena pela faixa de renda e salário decrescente (ORDER BY). Todos os elementos da alternativa espelham a função real de cada cláusula.
Alternativa C — ❌ Incorreta
Afirma que a cláusula CASE realiza uma filtragem, removendo funcionários da faixa "Baixa Renda". A cláusula CASE não filtra — ela apenas cria uma coluna calculada no resultado. A filtragem é feita pela cláusula WHERE, e não há nenhuma condição que remova registros da faixa "Baixa Renda".
Alternativa D — ❌ Incorreta
Afirma que a consulta atualiza os salários. Um comando SELECT nunca atualiza dados — atualização exige um comando UPDATE. A cláusula CASE apenas calcula uma faixa de renda para exibição, sem modificar a tabela.
Alternativa E — ❌ Incorreta
Afirma que a função YEAR(data_admissao) retorna o mês de admissão. A função YEAR() retorna o ano de uma data, não o mês (para mês, seria MONTH()). Além disso, o filtro é para admitidos até 2020, não após 2020.
NÃO CAIA NESSA!
A banca troca os papéis das cláusulas e inverte o operador de comparação. O candidato que confunde CASE com filtro, YEAR com mês, ou "até" com "após" cai nas alternativas A, C, D ou E. Lembre-se: WHERE filtra, CASE calcula, ORDER BY ordena, YEAR extrai o ano — e o filtro é <= 2020 (até 2020). Com treino, você enxerga essas trocas de longe 💪
NÃO CAIA NESSA!
Para questões de interpretação de consulta SQL, identifique primeiro o papel de cada cláusula: SELECT (projeção), FROM (origem), WHERE (filtro de linhas), GROUP BY (agrupamento), HAVING (filtro de grupos), ORDER BY (ordenação). Depois, verifique funções específicas como YEAR() (ano), MONTH() (mês), DAY() (dia). Isso resolve a maioria das pegadinhas.