Questão de Banco de Dados — SQL — CESPE / CEBRASPE 2024
- Código
- ce171333
- Banca
- CESPE / CEBRASPE
- Órgão
- CNPQ
- Ano
- 2024
- Nível
- Superior
- Cargo
- Analista em Ciência e Tecnologia Pleno I - Especialidade: Gestão de Dados Corporativos

- CCerto
- EErrado

GabaritoC — Certo
Gabarito: Certo (C). A cláusula GROUP BY CUBE(categoria, modelo) gera todas as combinações possíveis de agrupamento — incluindo os subtotais por categoria, por modelo e o total geral —, e a imagem apresentada reflete exatamente esse comportamento. A resposta está correta porque o CUBE é uma extensão do GROUP BY que produz a agregação para cada subconjunto das colunas listadas, além do total geral.
O GROUP BY CUBE é um recurso avançado de SQL usado em bancos de dados como PostgreSQL, SQL Server e Oracle. Ele pertence à família das cláusulas de agrupamento que incluem também ROLLUP e GROUPING SETS. Enquanto o ROLLUP gera apenas uma hierarquia de subtotais (da coluna mais específica para a mais geral), o CUBE gera todas as combinações possíveis entre as colunas indicadas. Para duas colunas, como no caso de categoria e modelo, o CUBE produz quatro níveis de agrupamento:
Agrupamento por categoria e modelo (linhas detalhadas);
Agrupamento apenas por categoria (subtotal por categoria);
Agrupamento apenas por modelo (subtotal por modelo);
Agrupamento sem nenhuma coluna (total geral).
Na prática, o resultado da consulta select categoria, modelo, sum(valor) from dados group by cube(categoria, modelo) apresenta:
Linhas com valores específicos de categoria e modelo;
Linhas onde categoria tem um valor e modelo é NULL (subtotal da categoria);
Linhas onde modelo tem um valor e categoria é NULL (subtotal do modelo);
Uma linha onde ambos são NULL (total geral).
A imagem da questão mostra exatamente essa estrutura: as linhas com pares (categoria, modelo), depois os subtotais com uma das colunas NULL e, por fim, o total geral com ambas NULL. Portanto, a afirmativa está correta.
Para identificar se uma questão envolve CUBE, ROLLUP ou GROUPING SETS, observe o número de linhas de subtotal. O CUBE com N colunas gera agrupamentos (incluindo o total geral). Com duas colunas, são 4 agrupamentos; com três, 8. O ROLLUP, por sua vez, gera apenas N+1 agrupamentos (hierarquia). Se a imagem mostrar subtotais para todas as combinações, é CUBE; se mostrar apenas uma sequência hierárquica, é ROLLUP.
A afirmativa está correta porque a cláusula GROUP BY CUBE(categoria, modelo) produz exatamente o resultado apresentado na imagem: linhas detalhadas para cada combinação de categoria e modelo, subtotais para cada categoria (com modelo NULL), subtotais para cada modelo (com categoria NULL) e o total geral (com ambas NULL). O CUBE é a operação que gera todas as combinações possíveis de agrupamento, e a imagem reflete fielmente esse comportamento.
Gabarito: Certo (C).
Link permanente: /questoes/ce171333