W tym poście ćwiczyłem rozwiązanie zadania metodą prób i
błędów. Zadanie i dane wsadowe do zadania są w poście powyżej.
Tutaj po raz drugi wklejam kwerendy A oraz B, gdzie
występuje grupowanie oraz klauzula
ROLLUP, a klauzula ROLLUP obejmuje dwa pola. Jedyna różnica pomiędzy A i B to
kolejność pół w klauzuli ROLLUP, żadnych innych różnic a patrząc na wyniki
widać wyraźnie, iż uzyskany zestaw
wierszy jest wyraźnie inny. Różnice zilustrowałem Marcinie na obrazku i
opisałem na obrazku.
Zobacz na obrazki,
tak będzie łatwiej, ponoć dobry obrazek jeden lepszy niż tysiąc słów.
Pozdrawiam,
W.
-- A
select
case
when grouping(to_char(data_umowy,'YYYY'))=0 then 'grupuję po roku'
else 'nie grupuję po roku' end grouping_na_rok_transakcji
, to_char(data_umowy,'YYYY') rok_transakcji
, case
when grouping(region)=0 then 'grupuję po regonie'
else' nie grupuję po regionie' end grouping_na_regionie
, region
, sum(kwota_transakcji) suma --
funkcja agregująca
, count(*) liczba --
funkcja agregująca
from transakcje
group by rollup ( to_char(data_umowy,'YYYY') , region
)
order by 2 , 4 ;
-- B
select
case
when grouping(to_char(data_umowy,'YYYY'))=0 then 'grupuję po roku'
else 'nie grupuję po roku' end grouping_na_rok_transakcji
, to_char(data_umowy,'YYYY') rok_transakcji
, case
when grouping(region)=0 then 'grupuję po regonie'
else' nie grupuję po regionie' end grouping_na_regionie
, region
, sum(kwota_transakcji) suma --
funkcja agregująca
, count(*) liczba --
funkcja agregująca
from transakcje
group by rollup ( region , to_char(data_umowy,'YYYY') )
order by 2 , 4 ;
Brak komentarzy:
Prześlij komentarz