Pular para o conteúdo principal

Questão de Banco de Dados — Consultas e Comandos em SQL — CESPE / CEBRASPE 2024

Banco de DadosConsultas e Comandos em SQL
Código
ce403628
Banca
CESPE / CEBRASPE
Órgão
CNJ
Ano
2024
Cargo
AJ
Julgue o item a seguir, a respeito de sistema gerenciador de banco de dados relacional e NoSQL.   Considere a tabela a seguir, de nome dados. Considere, ainda, que a seguinte consulta tenha sido executada. select sexo, idade, count(*) qtde from dados group by cube(sexo, idade) Nesse caso, é correto afirmar que o resultado da execução da consulta precedente será o apresentado a seguir.Imagem associada para resolução da questãoImagem associada para resolução da questão
  1. CCerto
  2. EErrado
Revelar gabarito e comentário

GabaritoE — Errado

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

SQL – GROUP BY CUBE e o Resultado da Consulta

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.

NÃO CAIA NESSA!

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.

1Combinações detalhadas
sexo + idade
2Subtotais por sexo
idade NULL
3Subtotais por idade
sexo NULL
4Total geral
sexo e idade NULL
GROUP BY CUBE(sexo, idade)
LEVELsoulevel.com.br
GROUP BY CUBE(sexo, idade): Combinações detalhadas (sexo + idade); Subtotais por sexo (idade NULL); Subtotais por idade (sexo NULL); Total geral (sexo e idade NULL)

Item — ❌ 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