Questão de Banco de Dados — Consultas e Comandos em SQL — CESPE / CEBRASPE 2024
- Código
- ce403628
- Banca
- CESPE / CEBRASPE
- Órgão
- CNJ
- Ano
- 2024
- Cargo
- AJ


- CCerto
- EErrado


GabaritoE — Errado
Gabarito: Errado. A consulta com GROUP BY CUBE(sexo, idade) gera subtotais para todas as combinações possíveis das colunas agrupadas, incluindo a linha de total geral (onde sexo e idade são NULL). O resultado apresentado na figura não corresponde a essa saída, pois não inclui todas as linhas de subtotal que o CUBE produz. A afirmação está incorreta. O comando GROUP BY CUBE é uma extensão da cláusula GROUP BY que calcula agregações para cada combinação possível dos grupos especificados. Diferentemente do GROUP BY simples, que retorna apenas uma linha para cada combinação distinta dos valores das colunas agrupadas, o CUBE gera subtotais para todos os níveis de agrupamento, incluindo o total geral. Isso significa que, para CUBE(sexo, idade), o resultado conterá:
Linhas para cada combinação de sexo e idade (o agrupamento mais detalhado).
Linhas de subtotal para cada sexo (com idade nula).
Linhas de subtotal para cada idade (com sexo nulo).
Uma linha de total geral (com sexo e idade nulos).
O CUBE é frequentemente usado em relatórios e análises multidimensionais (OLAP) para fornecer uma visão consolidada dos dados. Ele é semelhante ao ROLLUP, mas enquanto o ROLLUP gera subtotais apenas em uma hierarquia (da esquerda para a direita), o CUBE gera subtotais para todas as combinações possíveis, independentemente da ordem.
Para entender melhor, considere uma tabela dados com as seguintes linhas:
sexo | idade |
|---|---|
M | 20 |
M | 20 |
F | 20 |
F | 30 |
A consulta SELECT sexo, idade, COUNT(*) FROM dados GROUP BY CUBE(sexo, idade) produziria o seguinte resultado:
sexo | idade | qtde |
|---|---|---|
M | 20 | 2 |
F | 20 | 1 |
F | 30 | 1 |
M | NULL | 2 |
F | NULL | 2 |
NULL | 20 | 3 |
NULL | 30 | 1 |
NULL | NULL | 4 |
Observe que as linhas com NULL em uma das colunas representam os subtotais. A linha com NULL em ambas as colunas é o total geral. O resultado apresentado na figura da questão, portanto, está incompleto, pois não mostra todas essas linhas de subtotal. A pegadinha da banca está em apresentar um resultado que parece plausível, mas que omite os subtotais gerados pelo CUBE. O candidato pode ser induzido a pensar que o CUBE funciona como um GROUP BY simples, o que não é o caso.
A banca explora a confusão entre GROUP BY CUBE e GROUP BY simples. O CUBE gera subtotais para todas as combinações de colunas, incluindo o total geral, enquanto o GROUP BY simples retorna apenas as linhas detalhadas. Se a figura mostrasse apenas as combinações de sexo e idade sem as linhas de subtotal, o resultado estaria errado.
A afirmação de que o resultado da consulta é o apresentado na figura está incorreta. O GROUP BY CUBE(sexo, idade) gera um resultado com mais linhas do que o mostrado, incluindo subtotais para cada sexo, para cada idade e o total geral. Gabarito: Errado
Link permanente: /questoes/ce403628