Como analista de informática da Sanepar, você foi incumbido...
Gabarito comentado
Confira o gabarito comentado por um dos nossos professores
Alternativa correta: D
1. Tema central da questão
Esta questão trata de consultas SQL avançadas, envolvendo junção de tabelas (JOIN), filtros condicionais (WHERE), agrupamentos (GROUP BY e HAVING), ordenação (ORDER BY) e limitação de resultados (LIMIT). Esses são recursos fundamentais para extrair informações precisas de bancos de dados relacionais.
2. Resumo teórico
Para montar consultas precisas em SQL, é essencial dominar:
- JOIN: Faz a junção entre tabelas relacionadas, permitindo combinar informações.
- WHERE: Filtra dados com base em condições específicas.
- GROUP BY e HAVING: Agrupa resultados e permite filtrar agregações.
- ORDER BY: Ordena os dados pela coluna desejada. DESC indica ordem decrescente.
- LIMIT: Restringe o número de linhas retornadas.
Fonte: Elmasri & Navathe, Sistemas de Banco de Dados.
3. Justificativa da alternativa correta (D):
A letra D atende perfeitamente ao enunciado:
- JOIN correto entre Funcionarios e Dependentes usando ON f.FuncionarioID = d.FuncionarioID.
- WHERE d.Escola = 'Sim' garante que só dependentes que frequentam a escola sejam considerados.
- GROUP BY para agrupar pelos funcionários.
- HAVING COUNT(d.DependenteID) > 0 filtra funcionários que têm pelo menos um dependente escolarizado.
- ORDER BY f.Salario DESC ordena do maior para o menor salário.
- LIMIT 3 retorna apenas os três primeiros, ou seja, os 3 maiores salários.
Todas essas etapas, em conjunto, garantem fidelidade ao requisito.
4. Análise das alternativas incorretas:
- A e B: Usam WHERE d.Escola != 'Sim', selecionando quem não tem dependente escolarizado (contrário ao pedido), além do ORDER BY ASC (do menor para o maior), o que também foge do esperado. A opção A ainda apresenta erro em LIMIT < 3.
- C: O JOIN está invertido (ON f.FuncionarioID != d.FuncionarioID), o que não faz sentido lógico. Além disso, o HAVING COUNT(d.DependenteID) < 0 nunca retorna resultado, pois uma contagem nunca é negativa.
- E: Repete o erro do JOIN invertido, causando uma relação incorreta entre funcionários e dependentes.
5. Estratégia de interpretação
Ao resolver questões desse tipo, leia atentamente cada critério solicitado (dependente escolarizado, maiores salários, ordem decrescente, três resultados) e confira se a lógica da consulta corresponde a cada parte do comando SQL.
Gostou do comentário? Deixe sua avaliação aqui embaixo!
Clique para visualizar este gabarito
Visualize o gabarito desta questão clicando no botão abaixo