Podsumowania GROUPING, GROUPING_ID, GROUPING SETS, GROUP_ID

GROUPING - Funkcja jednoargumentowa., dla kolumny użytej w grupowaniu pokazuje 1, jeśli wiersz jest podsumowaniem. Tam gdzie są same 0 nie mamy podsumowań.

select
kolumna1,
kolumna2,
GROUPING(kolumna1) kolumna_grupujaca,
sum(kolumna3) suma
from tabela1
where
kolumna1 in (10,20,30) or kolumna1 is null
group by cube (kolumna1, kolumna2)

GROUPING_ID - Funkcja wieloargumentowa, pokazuje 0 tam gdzie nie ma podsumowań, kolejne liczby naturalne oznaczają podsumowanie względem konkretnego argumentu funkcji. Wartość wynoszq ilośc argumentów + 1 oznacza podsumowanie podsumowań.

select
kolumna1,
kolumna2,
sum(kolumna3) suma,
grouping_id(kolumna1, kolumna2) grup_id
from tabela1
where
kolumna1 in (10,20,30) or kolumna1 is null
group by cube (kolumna1, kolumna2)
having
grouping_id(kolumna1, kolumna2) = 1
order by grup_id

GROUPING SETS - Wypisanie kilku podsumowań na raz

select
kolumna1,
kolumna2,
sum(salary) suma
from tabela1
where
kolumna1 in (10,20,30)
group by GROUPING SETS
((kolumna1, kolumna2),
(kolumna1),
(kolumna2))

GROUP_ID Funkcja służy do wychwytywania duplikatów, zwraca wartość '1' dla zduplikowanych wierszy

select
kolumna1,
kolumna2,
sum(salary) suma,
GROUP_ID()
from tabela1
where
kolumna1 in (10,20,30)
group by kolumna1, rollup (kolumna1, kolumna2)

Tags: