GROUPING
(day, month, year), e calcula subtotais em cada nível da agregação e, depois, um total geral. O CUBE calcula subtotais para todas as combinações possíveis das colunas especificadas. O GROUPING identifica quais linhas retornadas por ROLLUP ou CUBE são linhas de superagregação e quais seriam retornadas por um GROUP BY sem modificadores.
A função GROUPING recebe várias colunas como argumento e retorna uma máscara de bits.
1indica que uma linha retornada por um modificadorROLLUPouCUBEnoGROUP BYé um subtotal0indica que uma linha retornada porROLLUPouCUBEnão é um subtotal
GROUPING SETS
Carregar dados de exemplo
Consultas simples
Comparando várias instruções GROUP BY com GROUPING SETS
Comparando CUBE com GROUPING SETS
CUBE(datacenter,distro,version), fornece uma hierarquia que pode não fazer sentido. Não faz sentido analisar version entre as duas distribuições, já que Arch e RHEL não têm o mesmo ciclo de lançamentos nem os mesmos padrões de nomenclatura de versão. O exemplo de GROUPING SETS a seguir é mais apropriado, pois agrupa distro e version no mesmo conjunto.
A versão no exemplo acima pode não fazer sentido quando não está associada a uma distro. Se estivéssemos rastreando a versão do kernel, isso poderia fazer sentido, porque a versão do kernel pode estar associada a qualquer uma das distros. Usar GROUPING SETS, como no exemplo seguinte, pode ser uma opção melhor.