Questão de Banco de Dados — Consultas e Comandos em SQL — CESPE / CEBRASPE 2024
Banco de Dados›Consultas e Comandos em SQL
Código
ce403661
Banca
CESPE / CEBRASPE
Órgão
SEBRAE
Ano
2024
Cargo
Ana Tec II ( )
Assinale a opção que apresenta corretamente a consulta SQL que retornará a média de salários por departamento de uma empresa, considerada uma tabela funcionarios com colunas departamento e salario.
ASELECT departamento, COUNT(salario) FROM funcionarios GROUP BY departamento;
BSELECT departamento, AVG(salario) FROM funcionarios GROUP BY departamento;
CSELECT departamento, SUM(salario) FROM funcionarios GROUP BY departamento;
DSELECT departamento, MAX(salario) FROM funcionarios GROUP BY departamento;
Revelar gabarito e comentário▾
GabaritoB — SELECT departamento, AVG(salario)
FROM funcionarios
GROUP BY departamento;
Comentário gerado por IA. É um apoio ao estudo, ancorado em fontes, mas pode conter imprecisões — confira sempre na fonte oficial (lei, súmula, edital e gabarito da banca). Encontrou um erro? Use “Reportar”.
SQL – Funções de Agregação e Agrupamento
Gabarito: letra B. A consulta correta para retornar a média de salários por departamento é SELECT departamento, AVG(salario) FROM funcionarios GROUP BY departamento;, pois a função de agregação AVG calcula a média aritmética dos valores de uma coluna numérica, e a cláusula GROUP BY agrupa as linhas por departamento, permitindo que a média seja calculada para cada grupo.
A questão cobra o conhecimento das funções de agregação do SQL, que são utilizadas para resumir informações de várias linhas em um único valor. As principais funções são COUNT, SUM, AVG, MAX e MIN. Cada uma tem um propósito específico: COUNT conta o número de linhas ou valores, SUM soma os valores de uma coluna numérica, AVG calcula a média aritmética, MAX retorna o maior valor e MIN retorna o menor valor. A cláusula GROUP BY é usada em conjunto com essas funções para agrupar linhas que têm os mesmos valores em colunas específicas, permitindo que a agregação seja aplicada a cada grupo separadamente.
No contexto da questão, a tabela funcionarios possui as colunas departamento e salario. Para obter a média de salários por departamento, é necessário agrupar os funcionários por departamento e, em seguida, aplicar a função AVG sobre a coluna salario dentro de cada grupo. A sintaxe correta é SELECT departamento, AVG(salario) FROM funcionarios GROUP BY departamento;. Essa consulta retornará uma linha para cada departamento, com o nome do departamento e a média salarial dos funcionários daquele departamento.
É importante destacar que a cláusula GROUP BY deve incluir todas as colunas não agregadas que aparecem na cláusula SELECT. Neste caso, a coluna departamento é a única coluna não agregada, portanto, ela deve estar no GROUP BY. As funções de agregação podem ser usadas na cláusula SELECT ou na cláusula HAVING, que é usada para filtrar grupos após a agregação, mas não é necessária nesta consulta.
A pegadinha desta questão está em confundir as funções de agregação. O candidato pode ser tentado a usar COUNT, SUM ou MAX, mas apenas AVG retorna a média. A banca explora exatamente essa distinção, oferecendo alternativas com funções diferentes para testar o conhecimento do candidato sobre o propósito de cada uma.
Funções de agregação SQL: COUNT (Conta linhas/valores); SUM (Soma valores numéricos); AVG (Média aritmética (gabarito)); MAX (Maior valor); MIN (Menor valor); GROUP BY (Agrupa por coluna não agregada, Permite agregar por grupo)
Alternativa A — ❌ Incorreta
A alternativa A usa a função COUNT(salario), que conta o número de valores não nulos na coluna salario para cada departamento. Isso retornaria a quantidade de funcionários por departamento, não a média salarial. A função COUNT é usada para contagem, não para cálculo de média.
Alternativa B — ✅ Correta ⟵ GABARITO
A alternativa B usa a função AVG(salario), que calcula a média aritmética dos valores da coluna salario para cada grupo de departamento. A cláusula GROUP BY departamento agrupa as linhas por departamento, e a função AVG é aplicada a cada grupo, retornando a média salarial de cada departamento. Esta é a consulta correta para atender ao requisito do enunciado.
Alternativa C — ❌ Incorreta
A alternativa C usa a função SUM(salario), que soma todos os valores da coluna salario para cada departamento. Isso retornaria o total de salários por departamento, não a média. A função SUM é usada para somar valores, não para calcular média.
Alternativa D — ❌ Incorreta
A alternativa D usa a função MAX(salario), que retorna o maior valor da coluna salario para cada departamento. Isso retornaria o maior salário de cada departamento, não a média. A função MAX é usada para encontrar o valor máximo, não para calcular média.