Pular para o conteúdo principal

Questão de Banco de Dados — Consultas e Comandos em SQL — CESPE / CEBRASPE 2024

Banco de DadosConsultas 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.
  1. ASELECT departamento, COUNT(salario)      FROM funcionarios     GROUP BY departamento;
  2. BSELECT departamento, AVG(salario)     FROM funcionarios     GROUP BY departamento;
  3. CSELECT departamento, SUM(salario)     FROM funcionarios     GROUP BY departamento;
  4. 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.

1COUNT
Conta linhas/valores
2SUM
Soma valores numéricos
3AVG
Média aritmética (gabarito)
4MAX
Maior valor
5MIN
Menor valor
6GROUP BY
Agrupa por coluna não agregada
Permite agregar por grupo
Funções de agregação SQL
LEVELsoulevel.com.br
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.

Gabarito: letra B

Link permanente: /questoes/ce403661