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

Hasonló előadás


Az előadások a következő témára: "Analitikus függvények"— Előadás másolata:

1 Analitikus függvények
Zoltán Botond

2 A diasor ismerete nem helyettesíti a tankönyvet, és a példatárat
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

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

4 Analitikus fv-k Három nagy csoportjuk van RANG Statisztikai Hisztogram
Zoltán Botond

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

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

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

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

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

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

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

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

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

14 Példa – 2. lépés select nezet.*, dept.dname from nezet, dept where nezet.részleg = dept.deptno; Zoltán Botond

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

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

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

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

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

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

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

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

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

24 Példa IV. - MEGOLDÁS Példatár 277.oldal 13.13-as példa Zoltán Botond

25 Köszönöm a figyelmeteket!
Zoltán Botond


Letölteni ppt "Analitikus függvények"

Hasonló előadás


Google Hirdetések