Pular para o conteúdo principal

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

Banco de DadosSQL
Código
fg068147
Banca
FGV
Órgão
SEDUC-SP
Ano
2023
Nível
Superior
Cargo
Professor de Ensino Fundamental e Médio (Educação Profissional) - Eixo 5 - Informação e Comunicação
Analise o comando SQL que João produziu.select Tipo, sum(Quantidade) Totalfrom Vendawhere Quantidade is not nullgroup by Tipo...Na linha pontilhada, João testou cinco opções para a cláusula order by, como segue.(1) order by 2(2) order by avg(Quantidade)(3) order by Quantidade(4) order by sum(Quantidade)(5) order by TotalNesse caso são possíveis as opções
  1. A1, 2, 3, 4, 5.
  2. B1, 2, 3, 4, apenas.
  3. C1, 4, 5, apenas.
  4. D1, 2, 4, 5, apenas.
  5. E4, 5, apenas.
Revelar gabarito e comentário

GabaritoD — 1, 2, 4, 5, apenas.

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

ORDER BY em consulta com GROUP BY

Gabarito: letra D. São possíveis as opções 1, 2, 4 e 5. A opção 3 (order by Quantidade) é inválida porque a coluna Quantidade não está no GROUP BY nem é uma função de agregação, violando a regra de que, após GROUP BY, apenas colunas do GROUP BY ou expressões agregadas podem ser usadas no ORDER BY.

A consulta original agrupa por Tipo e calcula sum(Quantidade) como Total. Vamos analisar cada opção:

Opção 1 — order by 2 — ✅ Possível

Ordena pela segunda coluna do SELECT, que é sum(Quantidade) (alias Total). A ordenação por posição ordinal é válida em SQL.

Opção 2 — order by avg(Quantidade) — ✅ Possível

avg(Quantidade) é uma função de agregação. Em consultas com GROUP BY, é permitido usar funções de agregação no ORDER BY, mesmo que não estejam no SELECT, pois o resultado já está agregado por grupo.

Opção 3 — order by Quantidade — ❌ Impossível

Quantidade não está no GROUP BY e não é uma expressão agregada. Após o GROUP BY, cada grupo produz uma única linha, e referir-se a uma coluna não agregada sem agrupamento é semanticamente ambíguo. A maioria dos bancos de dados rejeita essa cláusula (exceto em modos não padrão, como MySQL com sql_mode restrito).

Opção 4 — order by sum(Quantidade) — ✅ Possível

Mesma função de agregação usada no SELECT. Válida.

Opção 5 — order by Total — ✅ Possível

Total é o alias definido no SELECT para sum(Quantidade). O uso de alias no ORDER BY é permitido.

Opção

Cláusula ORDER BY

Possível?

Motivo

1

order by 2

Ordena pela 2ª coluna do SELECT (sum(Quantidade) / alias Total). Posição ordinal é válida.

2

order by avg(Quantidade)

Função de agregação. Permitida no ORDER BY mesmo sem estar no SELECT, pois o resultado já está agregado por grupo.

3

order by Quantidade

Coluna Quantidade não está no GROUP BY nem é função de agregação. Ambígua após agregação.

4

order by sum(Quantidade)

Função de agregação idêntica à do SELECT. Válida.

5

order by Total

Alias definido no SELECT para sum(Quantidade). Uso de alias no ORDER BY é permitido.

PEGA ESSA DICA!

Em consultas com GROUP BY, memorize que:

  • Colunas do ORDER BY devem estar no GROUP BY ou serem funções de agregação.

  • Alias e posições ordinais são aceitos.

  • Funções de agregação podem ser usadas mesmo se não listadas no SELECT.

Portanto, as opções viáveis são 1, 2, 4 e 5.

Gabarito: letra D

Link permanente: /questoes/fg068147