29
2005. december 1 2. Markó Tamás, PTE TTK 1 Az Oracle SQL 11. Elemzések támogatása

Az Oracle SQL 11

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 1

Az Oracle SQL 11.

Elemzések támogatása

2005. december 12. Markó Tamás, PTE TTK 2

A rádiótelefonokat kérem

KIKAPCSOLNI!

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 7

Az adattárház szerkezete

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 9

Új csoportképzési lehetőségek

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 17

Analitikus függvények

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

2005. december 12. Markó Tamás, PTE TTK 29

Az analitikus függvények általános alakja

• Függvénynév ([paraméter]) OVER (analitikus_tag)– analitikus_tag: [particionálás][rendezés [ablak]]