Az előadás letöltése folymat van. Kérjük, várjon

Az előadás letöltése folymat van. Kérjük, várjon

2005. december 12.Markó Tamás, PTE TTK1 Az Oracle SQL 11. Elemzések támogatása.

Hasonló előadás


Az előadások a következő témára: "2005. december 12.Markó Tamás, PTE TTK1 Az Oracle SQL 11. Elemzések támogatása."— Előadás másolata:

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

2 2005. december 12.Markó Tamás, PTE TTK2 A rádiótelefonokat kérem KIKAPCSOLNI!

3 2005. december 12.Markó Tamás, PTE TTK3 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

4 2005. december 12.Markó Tamás, PTE TTK4 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

5 2005. december 12.Markó Tamás, PTE TTK5 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

6 2005. december 12.Markó Tamás, PTE TTK6 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

7 2005. december 12.Markó Tamás, PTE TTK7 Az adattárház szerkezete

8 2005. december 12.Markó Tamás, PTE TTK8 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

9 2005. december 12.Markó Tamás, PTE TTK9 Új csoportképzési lehetőségek

10 2005. december 12.Markó Tamás, PTE TTK10 ROLLUP Egyszerre több egymásba ágyazott szinten képez összesítő adatokat Példa: SELECT deptno, job, SUM(sal), COUNT(*) AS letszam FROM scott.emp GROUP BY ROLLUP(deptno, job); részlegenként, azon belül beosztás szerint összesít

11 2005. december 12.Markó Tamás, PTE TTK11 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 14 13 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

12 2005. december 12.Markó Tamás, PTE TTK12 CUBE Mindegyik ismérv szerint egyenrangúan képez részcsoportokat Példa: SELECT deptno, job, SUM(sal), COUNT(*) AS letszam FROM scott.emp GROUP BY CUBE(deptno, job); részleg szerint is és beosztás szerint is összesít a sorrend felcserélésével ugyanezeket a sorokat kapjuk (csak más sorrendben)

13 2005. december 12.Markó Tamás, PTE TTK13 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 4 18 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

14 2005. december 12.Markó Tamás, PTE TTK14 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 letszam FROM scott.emp GROUP BY GROUPING SETS ( (mgr, deptno, job), (deptno, job), (mgr) ); három különböző csoportosítás

15 2005. december 12.Markó Tamás, PTE TTK15 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ő)

16 2005. december 12.Markó Tamás, PTE TTK16 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 1 26 sor kijelölve. azonos részleg és beosztás (össz. 14 fő) azonos főnök (össz. 14 fő)

17 2005. december 12.Markó Tamás, PTE TTK17 Analitikus függvények

18 2005. december 12.Markó Tamás, PTE TTK18 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 szazalek FROM scott.emp; ki hányadik a fizetési rangsorban

19 Analitikus rangfüggvények - eredmény ENAME SAL NORMAL TOMOR SZAZALEK ---------- ---------- ---------- ----- -------- KING 5000 1 1 0 SCOTT 3000 2 2.0769230 FORD 3000 2 2.0769230 JONES 2975 4 3.2307692 BLAKE 2850 5 4.3076923 CLARK 2450 6 5.3846153 ALLEN 1600 7 6.4615384 TURNER 1500 8 7.5384615 MILLER 1300 9 8.6153846 WARD 1250 10 9.6923076 MARTIN 1250 10 9.6923076 ADAMS 1100 12 10.8461538 JAMES 950 13 11.9230769 SMITH 800 14 12 1 14 sor kijelölve. ugrás

20 2005. december 12.Markó Tamás, PTE TTK20 Aggregáló rangfüggvények - példa SELECT RANK(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 szazalek FROM scott.emp; Az eredmény: NORMAL TOMOR SZAZALEK ---------- ---------- ---------- 2 2.071428571 hányadik lenne a 4000 a fizetési rangsorban OVER helyett WITHIN GROUP paraméter!

21 2005. december 12.Markó Tamás, PTE TTK21 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 sorrend FROM scott.emp ORDER BY deptno, ename; a rangokat minden részlegen belül külön kezeli

22 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 4 14 sor kijelölve.

23 2005. december 12.Markó Tamás, PTE TTK23 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) összeg SELECT ename, sal, SUM(sal) OVER (ORDER BY sal) AS kumulalt FROM scott.emp;

24 24 Kumulált összeg - az eredmény ENAME SAL KUMULALT ---------- ---------- ---------- SMITH 800 800 JAMES 950 1750 ADAMS 1100 2850 WARD 1250 5350 MARTIN 1250 5350 MILLER 1300 6650 TURNER 1500 8150 ALLEN 1600 9750 CLARK 2450 12200 BLAKE 2850 15050 JONES 2975 18025 SCOTT 3000 24025 FORD 3000 24025 KING 5000 29025 az azonos értékeket egyszerre adja hozzá az azonos értékeket egyszerre adja hozzá

25 2005. december 12.Markó Tamás, PTE TTK25 Kumulált összeg particionálással 1. SELECT deptno, ename, sal, SUM(sal) OVER (PARTITION BY deptno ORDER BY sal) AS kumulalt FROM scott.emp; részlegenként külön kezdi a kumulálást

26 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

27 2005. december 12.Markó Tamás, PTE TTK27 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 28 Csúszóátlag - eredmény ENAME SAL CSUSZOATLAG ---------- ---------- ----------- SMITH 800 875 JAMES 950 950 ADAMS 1100 1100 WARD 1250 1200 MARTIN 1250 1266.66667 MILLER 1300 1350 TURNER 1500 1466.66667 ALLEN 1600 1850 CLARK 2450 2300 BLAKE 2850 2758.33333 JONES 2975 2941.66667 SCOTT 3000 2991.66667 FORD 3000 3666.66667 KING 5000 4000

29 2005. december 12.Markó Tamás, PTE TTK29 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]]


Letölteni ppt "2005. december 12.Markó Tamás, PTE TTK1 Az Oracle SQL 11. Elemzések támogatása."

Hasonló előadás


Google Hirdetések