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

ANALITIKUS FÜGGVÉNYEK 2013.04.16.ZOLTÁN BOTOND 1.

Hasonló előadás


Az előadások a következő témára: "ANALITIKUS FÜGGVÉNYEK 2013.04.16.ZOLTÁN BOTOND 1."— Előadás másolata:

1 ANALITIKUS FÜGGVÉNYEK ZOLTÁN BOTOND 1

2 A diasor ismerete nem helyettesíti a tankönyvet, és a példatárat. A diasor ismerete szükséges, de nem elégséges feltétele a minimum elégséges érdemjegynek! ZOLTÁN BOTOND 2

3 ANALITIKUS FV-K • Új szemléletet jelentenek • Ezek a függvények nincsenek az SQL nyelvben • Új függvény család • Gazdasági felhasználásra, statisztikai számításokra tervezték • Mozgó „ablakon” végzett számítások ZOLTÁN BOTOND 3

4 ANALITIKUS FV-K • Három nagy csoportjuk van • RANG • Statisztikai • Hisztogram ZOLTÁN BOTOND 4

5 ÁLTALÁNOS FELÉPÍTÉS Fv_neve( [paraméter] ) OVER ( záradék ) • Mindig a SELECT utasításrészben találhatóak • A paraméter tetszőleges oszlopkifejezés lehet • Például: mgr, &fiz stb. • Az OVER záradék elhagyható  OVER() ZOLTÁN BOTOND 5

6 A ZÁRADÉK BŐVEBBEN – PARTÍCIÓ-TAG ([partíció tag] [rendező tag[ablak-tag]]) • A munkaterületet jelöli ki az analitikus záradék • Partíció tag: Egy munkatábla munkaterületén összefüggő táblatartományokat képezhetünk, ahol az oszlopkifejezések értéke azonos ZOLTÁN BOTOND 6

7 A ZÁRADÉK BŐVEBBEN – RENDEZŐ-TAG ([partíció tag] [rendező tag[ablak-tag]]) • Rendező tag: ORDER BY • A partíciókon belül rendez • Sokszor azonos a paraméterrel • Amikor elhagyjuk a paramétert, akkor tulajdonképpen a rendező tag a paraméter ZOLTÁN BOTOND 7

8 A ZÁRADÉK BŐVEBBEN – ABLAK-TAG ([partíció tag] [rendező tag[ablak-tag]]) • Az ablaktag az aktuális sortól rögzített méretű és a partíció résztartományán folyamatosan mozgó táblatartomány. • Az ablakon megy végbe a művelet ZOLTÁN BOTOND 8

9 A ZÁRADÉK BŐVEBBEN – ABLAK-TAG ([partíció tag] [rendező tag[ablak-tag]]) • Az ablak tag használatakor az analitikus függvény, amelyben • A csoportképző attribútum a paraméter • Hatóköre pedig az ablak • Ablak tag: lehet • Fizikai – ROWS • Megadhatjuk például, hogy az aktuális sortól 10-et nézzen felfele és 4-et lefele • Logikai – RANGE • Megadhatjuk például, hogy az aktuális sortó a partíció végéig vegye figyelembe a sorokat ZOLTÁN BOTOND 9

10 RANG FÜGGVÉNYEK • Over opcióval ellátott • RANK • DENSE_RANK • PERCENT_RANK • Különlegességük, hogy nem tartalmaz ablak tagot ZOLTÁN BOTOND 10

11 PÉLDA SELECT ename as nev, sal as fizu, RANK() OVER (Order by sal DESC) as normr, DENSE_RANK() OVER (Order by sal DESC) as tomor, PERECENT_RANK() OVER (Order by sal DESC) as szaz FROM emp; Itt mit tekinthetünk paraméternek? Mi az értelmezési tartomány? ZOLTÁN BOTOND 11

12 PÉLDA Készítsünk egy scriptet, amely a részlegek rangsorát megadja, hogy hányan dolgoznak ott a részlegek neve is legyen kiírva ZOLTÁN BOTOND 12

13 PÉLDA – 1. LÉPÉS create or replace view nezet as select emp.deptno as részleg, COUNT(emp.deptno) as "dolgozók száma", RANK() OVER (Order by count(emp.deptno) desc) as rangsor From emp group by emp.deptno; ZOLTÁN BOTOND 13

14 PÉLDA – 2. LÉPÉS select nezet.*, dept.dname from nezet, dept where nezet.részleg = dept.deptno; ZOLTÁN BOTOND 14

15 AGGREGÁLÓ RANG FV-K • OVER helyett WITHIN GROUP opcióval vannak ellátva • Nem analitikus függvények • A paraméterlistájuk nem üres • Mi lenne, ha... típusú feladatok ZOLTÁN BOTOND 15

16 PÉLDA • Felvennénk egy új dolgozót, Jani bátyát. • Írjunk egy szkriptet, mely megmondja, hogy egy adott fizetés esetén, hányadik legtöbbet kereső emberke lenne? • Magyarán kérjünk be egy fizetést, és nézzük meg, hogy hányadik lenne a rangsorban… ZOLTÁN BOTOND 16

17 PÉLDA - MEGOLDÁS ACCEPT fizu PROMPT ’Fizu: ’; SELECT ’rangsora’ as Kérdés, RANK(&fizu) WITHIN GROUP (Order by sal DESC) as Normrang, DENSE_RANK(&fizu) WITHIN GROUP (Order by sal DESC) as Tomorrang, PERCENT_RANK(&fizu) WITHIN GROUP (Order by sal DESC) as Szrang FROM emp; ZOLTÁN BOTOND 17

18 PÉLDA II. Kérjünk be egy fizetést és nézzük meg, hogy hányadik lenne az egyes részlegek rangsorában, tömör rangsorában ZOLTÁN BOTOND 18

19 PÉLDA II. - MEGOLDÁS Accept fiz Prompt 'Fizetés: ' Select &fiz as "Megadott fizetés", deptno as részleg, SUM(sal), RANK(&fiz) WITHIN GROUP(ORDER BY sal) as "Normál rangsor", DENSE_RANK WITHIN GROUP(ORDER BY sal) as "Tömör rangsor" From emp Group by deptno; ZOLTÁN BOTOND 19

20 PÉLDA III. – PARTÍCIÓS PÉLDA Határozzuk meg a New Yorki és Chicagoi dolgozók fizetési sorrendjét. Mi történik, ha nem használjuk a partíciós tagot? ZOLTÁN BOTOND 20

21 PÉLDA III. – PARTÍCIÓS PÉLDA Partíciók nélkül: Break on deptno on loc Select e.deptno, loc, ename, sal, DENSE_RANK() OVER(order by sal desc) as sorrend From emp e, dept d Where e.deptno = d.deptno and loc IN ('NEW YORK', 'CHICAGO'); ZOLTÁN BOTOND 21

22 PÉLDA III. – PARTÍCIÓS PÉLDA Partíciókkal: Break on deptno on loc Select e.deptno, loc, ename, sal, DENSE_RANK() OVER(Partition by e.deptno, order by sal desc) as sorrend From emp e, dept d Where e.deptno = d.deptno and loc IN ('New York', 'Chicago'); ZOLTÁN BOTOND 22

23 PÉLDA IV. Határozza meg előbb részlegenként és azon belül munkakörönként, majd csak részlegenként a dolgozók fizetési sorrendjét. A lista legyen elsődlegesen a részlegazonosító, másodlagosan a munkakör, harmadlagosan a dolgozók neve szerint rendezve ZOLTÁN BOTOND 23

24 PÉLDA IV. - MEGOLDÁS Példatár 277.oldal as példa ZOLTÁN BOTOND 24

25 Köszönöm a figyelmeteket! ZOLTÁN BOTOND 25


Letölteni ppt "ANALITIKUS FÜGGVÉNYEK 2013.04.16.ZOLTÁN BOTOND 1."

Hasonló előadás


Google Hirdetések