Pular para o conteúdo principal

Questão de Banco de Dados — SQL — CESPE / CEBRASPE 2024

Banco de DadosSQL
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
Considere-se a seguinte expressão SQL.select categoria, modelo, sum(valor)from dadosgroup by cube(categoria, modelo)Essa expressão, após executada, apresentará o resultado a seguir.Imagem associada para resolução da questão
  1. CCerto
  2. EErrado
Revelar gabarito e comentário

GabaritoC — Certo

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

GROUP BY CUBE: agregação multidimensional

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:

  1. Agrupamento por categoria e modelo (linhas detalhadas);

  2. Agrupamento apenas por categoria (subtotal por categoria);

  3. Agrupamento apenas por modelo (subtotal por modelo);

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

PEGA ESSA DICA!

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 2N2^N 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.

  1. 1Detalhe (categoria, modelo)
  2. 2Subtotal por categoria
  3. 3Subtotal por modelo
  4. 4Total geral
LEVEL · soulevel.com.br

Alternativa C — ✅ Certo ⟵ GABARITO

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