Pular para o conteúdo principal

Questão de Banco de Dados — SQL — Quadrix 2023

Banco de DadosSQL
Código
qg025997
Banca
Quadrix
Órgão
CREA-GO
Ano
2023
Nível
Superior
Cargo
Analista de Área - T.I

Imagem da questão

Com base no modelo de dados e no código SQL acima apresentados, julgue o item.Para que os dados sejam agrupados pelo crea (linha 14), a função MAX deve ser utilizada em um campo numérico, e não em um campo do tipo DATE.
  1. CCerto
  2. EErrado
Revelar gabarito e comentário

GabaritoE — Errado

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”.

Funções de agregação e GROUP BY em SQL

Gabarito: ERRADO (letra E). A afirmação está incorreta porque a função MAX pode ser aplicada a campos do tipo DATE sem nenhum problema — ela retorna a data mais recente (maior valor) do grupo. A restrição de tipo numérico existe apenas para as funções SUM e AVG, que fazem operações aritméticas; MAX, MIN e COUNT funcionam com qualquer tipo de dado comparável, incluindo datas. No código apresentado, a subconsulta usa MAX(ec1.data_fim) justamente para encontrar a data de término mais recente de cada engenheiro, e isso é perfeitamente válido.

As funções de agregação são o coração do SQL quando o assunto é resumir dados. Elas recebem um conjunto de valores de uma coluna e devolvem um único valor sintetizado. As cinco funções embutidas padrão são COUNT, SUM, MAX, MIN e AVG, e cada uma tem um comportamento específico: COUNT conta linhas, SUM soma valores numéricos, AVG calcula a média de valores numéricos, MIN retorna o menor valor e MAX retorna o maior valor de uma coluna.

A pegadinha desta questão está em generalizar uma restrição que só se aplica a algumas funções. SUM e AVG realmente exigem colunas numéricas, porque fazem sentido apenas com números — não existe "soma de datas" nem "média de datas" no SQL padrão. Mas MAX e MIN são funções de comparação: elas simplesmente percorrem os valores e identificam o maior ou o menor. Para isso, basta que o tipo de dado seja ordenável, e DATE é perfeitamente ordenável — uma data é maior que outra se vier depois no calendário. O próprio código da questão usa MAX(ec1.data_fim) para obter a data de término mais recente de cada engenheiro, o que prova que a função funciona com datas.

A cláusula GROUP BY é o mecanismo que agrupa linhas com valores iguais em uma coluna, permitindo que funções de agregação sejam aplicadas a cada grupo separadamente. No código, o GROUP BY ec1.crea na subconsulta agrupa os registros por engenheiro, e o MAX(ec1.data_fim) calcula a data mais recente para cada um. A restrição do GROUP BY é que todas as colunas não agregadas no SELECT devem aparecer no agrupamento — mas isso não tem relação com o tipo de dado da coluna agregada.

A banca explora exatamente essa confusão: o candidato que memoriza "funções de agregação só funcionam com números" sem distinguir quais funções têm essa limitação acaba marcando como certo. A distinção que importa é: SUM e AVG são aritméticas (exigem números), enquanto MAX, MIN e COUNT são comparativas ou contadoras (funcionam com qualquer tipo ordenável). Guarde essa fronteira — é ela que separa as alternativas desta questão.

Alternativa C — ❌ Incorreta

A afirmação de que "a função MAX deve ser utilizada em um campo numérico, e não em um campo do tipo DATE" está errada. A função MAX é uma função de agregação comparativa: ela retorna o maior valor de uma coluna, e para isso basta que o tipo de dado seja ordenável. Campos do tipo DATE são perfeitamente ordenáveis — uma data posterior é considerada maior. O próprio código da questão usa MAX(ec1.data_fim) na subconsulta para encontrar a data de término mais recente de cada engenheiro, o que demonstra na prática que a função funciona com datas. A restrição de tipo numérico se aplica apenas às funções SUM e AVG, que realizam operações aritméticas e não fazem sentido com datas.

PEGA ESSA DICA!

Para não errar mais, decore a divisão das funções de agregação por tipo de dado suportado:

Função

Tipo de dado

Operação

COUNT

Qualquer

Conta linhas

SUM

Numérico

Soma valores

AVG

Numérico

Calcula média

MAX

Qualquer ordenável (inclusive DATE)

Retorna o maior valor

MIN

Qualquer ordenável (inclusive DATE)

Retorna o menor valor

Na prova, quando a banca disser que uma função de agregação "só funciona com números", desconfie na hora: isso só é verdade para SUM e AVG. MAX e MIN aceitam datas, strings e qualquer tipo comparável.

Gabarito: letra E (ERRADO).

Link permanente: /questoes/qg025997