Sejam as seguintes tabelas:DEPTO ( coddep , descricao, estad...
Sejam as seguintes tabelas:
DEPTO ( coddep , descricao, estado)
FUNCIONARIO( codigo , nome, salário,coddep)
no qual coddep de DEPTO e codigo de FUNCIONARIO são chaves primárias das respectivas tabelas, coddep de FUNCIONARIO é chave estrangeira ligada à tabela DEPTO e salário é um campo do tipo moeda. A consulta que devolve a soma dos salários dos funcionários dos departamentos, congregados por estado, é
- Gabarito Comentado (1)
- Aulas (12)
- Comentários (0)
- Estatísticas
- Cadernos
- Criar anotações
- Notificar Erro
Gabarito comentado
Confira o gabarito comentado por um dos nossos professores
Gabarito: B
A alternativa correta é a letra B.
Vamos entender o contexto da questão e a razão pela qual a alternativa B é a correta.
A questão requer uma consulta SQL que devolva a soma dos salários dos funcionários dos departamentos, agrupados por estado. Para isso, precisamos utilizar as tabelas DEPTO e FUNCIONARIO, onde:
- A tabela DEPTO contém as colunas coddep, descricao e estado.
- A tabela FUNCIONARIO contém as colunas codigo, nome, salário e coddep.
- O campo salário é do tipo moeda.
Vamos analisar a alternativa correta e as incorretas:
Alternativa B: SELECT DEPTO.estado, SUM(FUNCIONARIO.salario) FROM DEPTO, FUNCIONARIO WHERE (FUNCIONARIO.coddep=DEPTO.coddep) GROUP BY DEPTO.estado;
Esta consulta está correta porque:
- Seleciona o campo estado da tabela DEPTO.
- Calcula a somatória dos salários dos funcionários.
- Realiza a junção correta entre as tabelas DEPTO e FUNCIONARIO através da condição FUNCIONARIO.coddep = DEPTO.coddep.
- Utiliza o GROUP BY para agrupar os resultados por estado.
Alternativa A: SELECT DEPTO.estado, AVG(FUNCIONARIO.salario) FROM DEPTO, FUNCIONARIO WHERE (FUNCIONARIO.coddep=DEPTO.coddep) GROUP BY DEPTO.estado;
Incorreta porque:
- Usa a função AVG (média) ao invés de SUM para calcular a somatória dos salários.
Alternativa C: SELECT DEPTO.estado, COUNT(FUNCIONARIO.salario) FROM DEPTO, FUNCIONARIO WHERE (FUNCIONARIO.coddep=DEPTO.coddep) GROUP BY DEPTO.estado;
Incorreta porque:
- Usa a função COUNT (contagem) ao invés de SUM para calcular a somatória dos salários.
Alternativa D: SELECT DEPTO.estado SUM(FUNCIONARIO.salario) FROM DEPTO, FUNCIONARIO WHERE (FUNCIONARIO.coddep=DEPTO.coddep) ORDER BY DEPTO.estado;
Incorreta porque:
- Faltou a vírgula entre DEPTO.estado e SUM(FUNCIONARIO.salario).
- Não utiliza o GROUP BY, essencial para agrupar os resultados por estado.
Alternativa E: SELECT DEPTO.coddep, COUNT(FUNCIONARIO.salario) FROM DEPTO, FUNCIONARIO WHERE (FUNCIONARIO.coddep=DEPTO.coddep) ORDER BY DEPTO.estado;
Incorreta porque:
- Seleciona o campo coddep ao invés de estado.
- Usa a função COUNT ao invés de SUM para calcular a somatória dos salários.
- Não utiliza o GROUP BY.
Como visto, a alternativa B é a única que atende a todos os requisitos da questão, devolvendo a soma dos salários dos funcionários dos departamentos, agrupados por estado.
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