Considere as seguintes tabelas em uma base de dados relacion...
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:
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