Upload
allegra-hodges
View
50
Download
0
Embed Size (px)
DESCRIPTION
Az Oracle SQL 11. Elemzések támogatása. A rádiótelefonokat kérem KIKAPCSOLNI!. Felhasznált irodalom. Gyári dokumentáció: Data Warehousing Guide 18. fejezet: SQL for Aggregation in Data Warehouses - PowerPoint PPT Presentation
Citation preview
2005. december 12. Markó Tamás, PTE TTK 3
Felhasznált irodalom
• Gyári dokumentáció:Data Warehousing Guide 18. fejezet:SQL for Aggregation in Data Warehouses
• Kende Mária - Nagy István: Oracle példatár 13. fejezet: Részletező csoportosítások és analitikus függvények az SQL-ben
2005. december 12. Markó Tamás, PTE TTK 4
Data Warehouse - adattárház
• Relációs adatbázis, de– lekérdezésekre és elemzésekre tervezték (nem
tranzakciók feldolgozására)
– általában történelmi adatsorokat tartalmaz, amik tranzakciós rendszerekből származnak
– általában több forrásból is gyűjt adatokat
– OLAP-eszközök is tartoznak hozzá (lásd a multidimenziós adatmodellről tanultakat)
• A cégen belül különválik a tranzakciók feldolgozása és az elemzés
2005. december 12. Markó Tamás, PTE TTK 5
Az adattárház jellemzői
• Adott célra készül (pl. az értékesítések elemzésére)• Integrált:
– több forrásból gyűjt adatokat
– ezeket azonos formára hozza
• Nemfelejtő:– az ide bekerülő adatok többé nem módosulnak
– hosszú időn át megmaradnak
• Lehetővé teszi az időbeli változások tanulmányozását
2005. december 12. Markó Tamás, PTE TTK 6
Eltérések a tranzakciókezelő (OLTP) rendszerektől
Tranzakciókezelő:• kevés index• sok kapcsolat• 3NF• származtatott adatok
tárolása ritka• mindig naprakész
(adatmódosítás gyakran, kevés rekordon)
Adattárház:• sok index• kevés kapcsolat• nem normalizált• származtatott adatok
tárolása gyakori• adatfrissítés naponta /
hetente, sok új rekord egyszerre
2005. december 12. Markó Tamás, PTE TTK 8
Adattárházak támogatása SQL-ben
• Az Oracle-nél csak az Oracle 8i óta• Fontos kiterjesztések:
– új csoportképzési eszközök
– analitikus (elemző) függvények
• Az analitikus függvények nem részei a szabványos SQL-nek– a szabványosítás napirenden van
2005. december 12. Markó Tamás, PTE TTK 10
ROLLUP
• Egyszerre több egymásba ágyazott szinten képez összesítő adatokat
• Példa:SELECT deptno, job, SUM(sal), COUNT(*) AS letszamFROM scott.empGROUP BY ROLLUP(deptno, job);
részlegenként, azon belül
beosztás szerint összesít
2005. december 12. Markó Tamás, PTE TTK 11
ROLLUP – az eredmény
• DEPTNO JOB SUM(SAL) LETSZAM---------- --------- ---------- ---------- 10 CLERK 1300 1 10 MANAGER 2450 1 10 PRESIDENT 5000 1 10 8750 3 20 CLERK 1900 2 20 ANALYST 6000 2 20 MANAGER 2975 1 20 10875 5 30 CLERK 950 1 30 MANAGER 2850 1 30 SALESMAN 5600 4 30 9400 6 29025 1413 sor kijelölve.
összesítés a részlegre
főösszesen
ezt az információt hagyományosan csak 3 SELECT tudná előállítani
2005. december 12. Markó Tamás, PTE TTK 12
CUBE
• Mindegyik ismérv szerint egyenrangúan képez részcsoportokat
• Példa:SELECT deptno, job, SUM(sal), COUNT(*) AS letszamFROM scott.empGROUP BY CUBE(deptno, job);
részleg szerint is és beosztás szerint is összesít
a sorrend felcserélésévelugyanezeket a sorokat kapjuk
(csak más sorrendben)
2005. december 12. Markó Tamás, PTE TTK 13
CUBE - az eredmény• DEPTNO JOB SUM(SAL) LETSZAM---------- --------- ---------- ---------- 29025 14 CLERK 4150 4 ANALYST 6000 2 MANAGER 8275 3 SALESMAN 5600 4 PRESIDENT 5000 1 10 8750 3 10 CLERK 1300 1 10 MANAGER 2450 1 10 PRESIDENT 5000 1 20 10875 5 20 CLERK 1900 2 20 ANALYST 6000 2 20 MANAGER 2975 1 30 9400 6 30 CLERK 950 1 30 MANAGER 2850 1 30 SALESMAN 5600 418 sor kijelölve.
főösszesen
összesítés a részlegre
összesítések
a beosztásra
összesítés a részlegre
azonos részleg és azonos beosztás
2005. december 12. Markó Tamás, PTE TTK 14
GROUPING SETS
• Több csoportosítás is képezhető egy lekérdezésben ugyanazokból a rekordokból
• Példa:SELECT mgr, deptno, job, SUM(sal), count(*) as letszamFROM scott.empGROUP BY GROUPING SETS (
(mgr, deptno, job),(deptno, job),(mgr)
);három különböző
csoportosítás
2005. december 12. Markó Tamás, PTE TTK 15
GROUPING SETS – az eredmény 1.
• MGR DEPTNO JOB SUM(SAL) LETSZAM---------- ---------- --------- ---------- ---------- 7782 10 CLERK 1300 1 7839 10 MANAGER 2450 1 10 PRESIDENT 5000 1 7788 20 CLERK 1100 1 7902 20 CLERK 800 1 7566 20 ANALYST 6000 2 7839 20 MANAGER 2975 1 7698 30 CLERK 950 1 7839 30 MANAGER 2850 1 7698 30 SALESMAN 5600 4
azonos főnök, részleg és beosztás
(össz. 14 fő)
2005. december 12. Markó Tamás, PTE TTK 16
GROUPING SETS – az eredmény 2.• MGR DEPTNO JOB SUM(SAL) LETSZAM
---------- ---------- --------- ---------- ---------- 10 CLERK 1300 1 10 MANAGER 2450 1 10 PRESIDENT 5000 1 20 CLERK 1900 2 20 ANALYST 6000 2 20 MANAGER 2975 1 30 CLERK 950 1 30 MANAGER 2850 1 30 SALESMAN 5600 4 7566 6000 2 7698 6550 5 7782 1300 1 7788 1100 1 7839 8275 3 7902 800 1 5000 126 sor kijelölve.
azonos részleg és beosztás
(össz. 14 fő)
azonos főnök(össz. 14 fő)
2005. december 12. Markó Tamás, PTE TTK 18
Analitikus rangfüggvények - példa
• SELECT ename, sal,RANK() OVER (ORDER BY sal DESC) AS normal,DENSE_RANK() OVER (ORDER BY sal DESC) AS tomor,PERCENT_RANK() OVER (ORDER BY sal DESC) AS szazalekFROM scott.emp;
ki hányadik a fizetési rangsorban
Analitikus rangfüggvények - eredmény• ENAME SAL NORMAL TOMOR SZAZALEK---------- ---------- ---------- ----- --------KING 5000 1 1 0SCOTT 3000 2 2 .0769230FORD 3000 2 2 .0769230JONES 2975 4 3 .2307692BLAKE 2850 5 4 .3076923CLARK 2450 6 5 .3846153ALLEN 1600 7 6 .4615384TURNER 1500 8 7 .5384615MILLER 1300 9 8 .6153846WARD 1250 10 9 .6923076MARTIN 1250 10 9 .6923076ADAMS 1100 12 10 .8461538JAMES 950 13 11 .9230769SMITH 800 14 12 1
14 sor kijelölve.
ugrás
ugrás
2005. december 12. Markó Tamás, PTE TTK 20
Aggregáló rangfüggvények - példa
• SELECTRANK(4000) WITHIN GROUP (ORDER BY sal DESC) AS normal,DENSE_RANK(4000) WITHIN GROUP (ORDER BY sal DESC) AS tomor,PERCENT_RANK(4000) WITHIN GROUP (ORDER BY sal DESC) AS szazalekFROM scott.emp;
• Az eredmény: NORMAL TOMOR SZAZALEK---------- ---------- ---------- 2 2 .071428571
hányadik lenne a 4000a fizetési rangsorban
OVER helyettWITHIN GROUP
paraméter!
2005. december 12. Markó Tamás, PTE TTK 21
Particionálás
• A sorok részhalmazaira számítja ki az analitikus függvények értékét
• Példa:SELECT deptno, ename, sal,RANK() OVER ( PARTITION BY deptno ORDER BY sal DESC) AS sorrendFROM scott.empORDER BY deptno, ename;
a rangokat minden részlegen belül
külön kezeli
2005. december 12.
Particionálás - az eredmény• DEPTNO ENAME SAL SORREND---------- ---------- ---------- ---------- 10 CLARK 2450 2 10 KING 5000 1 10 MILLER 1300 3 20 ADAMS 1100 4 20 FORD 3000 1 20 JONES 2975 3 20 SCOTT 3000 1 20 SMITH 800 5 30 ALLEN 1600 2 30 BLAKE 2850 1 30 JAMES 950 6 30 MARTIN 1250 4 30 TURNER 1500 3 30 WARD 1250 414 sor kijelölve.
2005. december 12. Markó Tamás, PTE TTK 23
Statisztikai függvények
• Az ismert statisztikai függvények az OVER taggal kiegészítve (a működés más)
• Példa: göngyölített (kumulált) összegSELECT ename, sal, SUM(sal) OVER (ORDER BY sal) AS kumulalt FROM scott.emp;
24
Kumulált összeg - az eredmény• ENAME SAL KUMULALT---------- ---------- ----------SMITH 800 800JAMES 950 1750ADAMS 1100 2850WARD 1250 5350MARTIN 1250 5350MILLER 1300 6650TURNER 1500 8150ALLEN 1600 9750CLARK 2450 12200BLAKE 2850 15050JONES 2975 18025SCOTT 3000 24025FORD 3000 24025KING 5000 29025
az azonos értékeketegyszerre adja hozzá
az azonos értékeketegyszerre adja hozzá
2005. december 12. Markó Tamás, PTE TTK 25
Kumulált összeg particionálással 1.
• SELECT deptno, ename, sal, SUM(sal) OVER (PARTITION BY deptno ORDER BY sal) AS kumulaltFROM scott.emp;
részlegenként külön kezdia kumulálást
Kumulált összeg particionálással 2.• DEPTNO ENAME SAL KUMULALT---------- ---------- ---------- ---------- 10 MILLER 1300 1300 10 CLARK 2450 3750 10 KING 5000 8750 20 SMITH 800 800 20 ADAMS 1100 1900 20 JONES 2975 4875 20 SCOTT 3000 10875 20 FORD 3000 10875 30 JAMES 950 950 30 WARD 1250 3450 30 MARTIN 1250 3450 30 TURNER 1500 4950 30 ALLEN 1600 6550 30 BLAKE 2850 9400
2005. december 12. Markó Tamás, PTE TTK 27
Csúszóátlag
• SELECT ename, sal, AVG(sal) OVER ( ORDER BY sal ROWS BETWEEN 1 PRECEDING AND 1 FOLLOWING) AS csuszoatlag FROM scott.emp;
az előző, az aktuálisés a következő sor átlaga
28
Csúszóátlag - eredmény• ENAME SAL CSUSZOATLAG---------- ---------- -----------SMITH 800 875JAMES 950 950ADAMS 1100 1100WARD 1250 1200MARTIN 1250 1266.66667MILLER 1300 1350TURNER 1500 1466.66667ALLEN 1600 1850CLARK 2450 2300BLAKE 2850 2758.33333JONES 2975 2941.66667SCOTT 3000 2991.66667FORD 3000 3666.66667KING 5000 4000