Como analista de informática da Sanepar, você foi incumbido...

Próximas questões
Com base no mesmo assunto
Q3451104 Banco de Dados
Como analista de informática da Sanepar, você foi incumbido de manipular o banco de dados da empresa para realizar uma consulta SQL (Structured Query Language) específica. Seu chefe solicitou que você extraísse uma lista contendo o identificador, nome e salário dos funcionários que recebem os três maiores salários na empresa, além disso, esses funcionários devem ter dependentes que estejam frequentando a escola. A consulta deve utilizar as tabelas Funcionários e Dependentes, e os salários devem estar ordenados do maior para o menor. Nesse contexto, assinale a alternativa que apresenta a consulta que atende às necessidades da tarefa que você deverá realizar. 
Alternativas

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