Sejam as seguintes tabelas:DEPTO ( coddep , descricao, estad...

Próximas questões
Com base no mesmo assunto
Q2801512 Arquitetura de Software

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, é

Alternativas

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