Considere as seguintes tabelas em uma base de dados relacion...

Próximas questões
Com base no mesmo assunto
Q930479 Banco de Dados
Considere as seguintes tabelas em uma base de dados relacional, onde as chaves primárias estão sublinhadas.
Departamento (CodDepartamento, NomeDepartamento) Empregado (CodEmpregado, NomeEmpregado, CodDepartamento, SalarioEmpregado)
Seja a seguinte consulta executada sobre esta base de dados:
SELECT D.CodDepartamento, AVG(SalarioEmpregado) FROM Departamento D, Empregado E WHERE E.CodDepartamento=D.CodDepartamento AND E.SalarioEmpregado > 1000 GROUP BY D.CodDepartamento HAVING COUNT(*) > 40
A consulta acima obtém o seguinte resultado:
Alternativas

Gabarito comentado

Confira o gabarito comentado por um dos nossos professores

Alternativa Correta: D

A questão aborda a realização de uma consulta SQL em um banco de dados relacional que contenha duas tabelas: Departamento e Empregado. Para solucioná-la, é necessário compreender como realizar consultas SQL que envolvam operações de junção (JOIN), funções de agregação como AVG (média) e COUNT (contagem), além das cláusulas WHERE, GROUP BY e HAVING. Além disso, a interpretação precisa de condições lógicas é essencial para extrair os resultados corretos conforme solicitado na consulta.

A alternativa correta é a D, que afirma: "Para departamentos com mais que 40 empregados que tenham salário maior que 1000, obter o código do departamento e a média salarial dos empregados do departamento que ganham mais que 1000." Este resultado é exatamente o que a consulta SQL fornecida realizará, pois:

  • A junção das tabelas Departamento e Empregado é feita pela condição E.CodDepartamento = D.CodDepartamento, garantindo que apenas empregados que pertencem a um departamento sejam considerados na consulta.
  • A condição E.SalarioEmpregado > 1000 na cláusula WHERE filtra os empregados que têm salário superior a 1000, ou seja, apenas esses empregados serão avaliados na média.
  • A cláusula GROUP BY D.CodDepartamento agrupa os resultados por departamento, permitindo calcular a média salarial para cada um.
  • A cláusula HAVING COUNT(*) > 40 aplica um filtro adicional após o agrupamento, restringindo os resultados aos departamentos com mais de 40 empregados que atendem à condição de salário estabelecida anteriormente.

Portanto, a consulta irá retornar o código de cada departamento que possui mais de 40 empregados com salário acima de 1000, juntamente com a média salarial desses empregados.

Clique para visualizar este gabarito

Visualize o gabarito desta questão clicando no botão abaixo

Comentários

Veja os comentários dos nossos alunos

SELECT D.CodDepartamento, AVG(SalarioEmpregado)

FROM Departamento D,

Empregado E

WHERE E.CodDepartamento=D.CodDepartamento AND

E.SalarioEmpregado > 1000

GROUP BY D.CodDepartamento

HAVING COUNT(*) > 40

D) Para departamentos com mais que 40 empregados que tenham salário maior que 1000, obter o código do departamento e a média salarial dos empregados do departamento que ganham mais que 1000. 

Clique para visualizar este comentário

Visualize os comentários desta questão clicando no botão abaixo