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

- CCerto
- EErrado

GabaritoE — Errado
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.
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.
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 |
|---|---|---|
| Qualquer | Conta linhas |
| Numérico | Soma valores |
| Numérico | Calcula média |
| Qualquer ordenável (inclusive DATE) | Retorna o maior valor |
| 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