plsem02b --1 Wprowadzenie 2 Operatory agregujące SQL.pdf

(71 KB) Pobierz
Microsoft Word - 2 mzakrz1.doc
Implementacja przetwarzania analitycznego przy wykorzystaniu Oracle9i OLAP
25
1 Wprowadzenie
!"#$ %
&$&'(&
&&(&&
wielowymiarowych magazynów (hurtowni) danych. Po drugie, systemy relacyjnych baz danych
&&&$
) !"#
&& *$+&&&
,))&&$-
& !"#''
funkcje rankingowe itp.
W artykule prze
* &) !"#
. /$ ) &$ 0 &
& ' ) & & &
1%2"3$0& *'
))&$%)
podsumowanie.
2
2.1 Operator ROLLUP
1%2"3& 44-,'&
& & $ # '
agre
)(&&'
nie kilku oddzielnych z
&' & &&( ( &$
!& & %2 )
&' & ) $ &
&)&'&&&
')$
select region, produkt, sum(kwota)
from sprzedaz
group by rollup(region, produkt)
REGION PRODUKT SUM(KWOTA)
-------------- ------------ ----------
Mazowsze Oleje 23000
Mazowsze Opony 97000
Mazowsze Reflektory 97000
Mazowsze 1367000
Wielkopolska Oleje 230000
Wielkopolska Opony 152000
Wielkopolska Reflektory 48000
Wielkopolska 660000
2027000
zarz
Orac
Operator ROLLUP stanowi rozszerze
 
26
Maciej Zakrzewicz
2&%2)
&&&561%2"3%417+'%#28,9'61%2
BY REGION” i „GROUP BY NULL”.
2.2 O PERATOR CUBE
& -2"4 1%2 "3 & 44-,$
Zapyta
roduktów
w ''&)$
select region, produkt, sum(kwota)
from sprzedaz
group by cube(region, produkt)
REGION PRODUKT SUM(KWOTA)
-------------- ------------ ----------
Mazowsze Oleje 23000
Mazowsze Opony 97000
Mazowsze Reflektory 97000
Mazowsze 1367000
Wielkopolska Oleje 230000
Wielkopolska Opony 152000
Wielkopolska Reflektory 48000
Wielkopolska 660000
Oleje 253000
Opony 249000
Reflektory 145000
2027000
2 & -2"4 )
za &&&561%2"3%417+'%#28,9'61%2
BY REGION”, „GROUP BY PRODUKT” i „GROUP BY NULL”.
2.3 O PERATOR GROUPING SETS
&1%27+1 4, &
jednym przebiegu zapytania SELECT. Jego argumentem jest lista wielu zestawów kolumn
grupu
select region, produkt, sum(kwota)
from sprzedaz
group by grouping sets((region, produkt),(produkt))
REGION PRODUKT SUM(KWOTA)
-------------- ------------ ----------
Mazowsze Oleje 23000
Wielkopolska Oleje 230000
Oleje 253000
Mazowsze Opony 97000
Wielkopolska Opony 152000
Opony 249000
Mazowsze Reflektory 97000
&-2"4)&'
&)&$&
&)&'&&&
$&&)&'&
w ramach produktów w regionach oraz w ramach produktów.
 
Implementacja przetwarzania analitycznego przy wykorzystaniu Oracle9i OLAP
27
Wielkopolska Reflektory 48000
Reflektory 145000
2&1%27+1 4, )
&&&5 „GROUP BY REGION, PRODUKT” i
„GROUP BY PRODUKT”.
3 Funkcje analityczne SQL
3.1 P ARTYCJE OBLICZENIOWE
ELECT. Dla
&'&&($
) *&&. !"#'
&
kordu grupy (a nie tylko raz dla
) &$ 0 ' 1%2 "3 (
zast &%,7,7+&5
funkcja_grupowa() over (partition by kolumna )
gdzie:
- funkcja() to tradycyjna funkcja grupowa,
- kolumna() &
grupowej.
0 %,7,7+ & & & '
&) o ) &&$ & &)
%,7,7+ & 2:
ego rekordu
select region, produkt, kwota,
sum(kwota) over (partition by region) sum_kwota,
round(100*kwot !"#$%&'()"
from sprzedaz
order by region, produkt
REGION PRODUKT KWOTA SUM_KWOTA #$%&'()
-------------- ------------ ---------- ---------- ----------
Mazowsze Oleje 23000 1367000 2
Mazowsze Opony 97000 1367000 7
Mazowsze Reflektory 97000 1367000 7
1367000 84
Wielkopolska Oleje 230000 660000 35
Wielkopolska Opony 152000 660000 23
Wielkopolska Reflektory 48000 660000 7
660000 35
!&&&)'&)
umików stanowi na Mazowszu
.<=&$
,&'&) 2:';1-2+,'
&&1%2"3&
 
28
Maciej Zakrzewicz
! ) ( && &5
RA
,7>,>%4%,$ ? &&
) & $
RA
,7>,>%4%,&&&(&
&&&&)$
+&('&&%,7,7+
1%2 "3 &$ 0 & &
charak
&$ 0 & & & )
1%2 "3 $ 0
pows
)&&&'%,7,7+'
&$
3.2 R UCHOME OKNO OBLICZENIOWE
0&(& grupy rekordów
& $ 1& (
defi &&%0 %+14$0%0 $
fi
''%+14
$'$
# ) %+14 &
)5
funkcja() over ([partition by kol1 ] order by kol2 [desc] range between wyr1 and wyr2 )
gdzie:
- funkcja() to funkcja grupowa ,
- kol1
&&'&
@&
partition
'&&)'
- kol2 to kolumna (lub w
&&'
- desc
&&&'
- wyr1
&)&'
- wyr2
&)$
0
wyr1
&&&(5
- UNBOUNDED PRECEDING –
&&&'
- CURRENT ROW –
&&'
- n PRECEDING –
&&
kol2
(
- INTERVAL ‘n’ DAYS | MONTHS | YEARS PRECEDING –
desc
'
&
re
&
kol2
(
n
AA
desc
$
0
wyr2
&&&(5
- UNBOUNDED FOLLOWING –
&'
- CURRENT ROW –
&'
- n FOLLOWING –
&
kol2
(
- INTERVAL ‘n’ DAYS | MONTHS | YEARS FOLLOWING –
desc
'
rekor
&
kol2
(
n
AA
desc
mniej
$
' )
uczowego RANGE stosujemy
)
o
%0 $'7+,4%;$
w
n
o n
n
 
Implementacja przetwarzania analitycznego przy wykorzystaniu Oracle9i OLAP
29
& &) $
za
& &
cach w ramach
$
select rok, kwartal, kwota,
sum(kwota) over (partition by rok order by kwartal
range between unbounded preceding and current row) as
kwota_kum
from sprzedaz_kwartalna
order by rok, kwartal;
ROK KWARTAL KWOTA KWOTA_KUM
---------- ---------- ---------- ----------
2000 1 250000 250000
2000 2 100000 350000
2000 3 130000 480000
2000 4 70000 550000
2001 1 110000 110000
2001 2 130000 240000
2001 3 100000 340000
2001 4 120000 460000
!&&&)'BCCC
&)<.CCCC$
0&)')&
) )$ !'
&
o
)&&)$
select rok, kwartal, kwota,
avg(kwota) over (partition by rok order by kwartal
range between 3 preceding and current row) as avg_3
from sprzedaz_kwartalna
order by rok, kwartal;
ROK KWARTAL KWOTA AVG_3
---------- ---------- ---------- ----------
2000 1 250000 250000
2000 2 100000 175000
2000 3 130000 160000
2000 4 70000 137500
2001 1 110000 110000
2001 2 130000 120000
2001 3 100000 113333
2001 4 120000 115000
&)(
&5 ?7% ,>;24 ,>;24$ ?
wybranej kolumny odpowiednio z pierwszego i ostatniego rekordu okna obliczeniowego.
Podobnie do funkc
Zapytani
&&)14#''
' '
defi
%+14A%0 $ ? 1 (
rekordu poprzedzaj
' 4#
(&
rekor
$ & &) & 1
&$
 
Zgłoś jeśli naruszono regulamin