1 / 25

Analitikus függvények

Analitikus függvények. 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!. Analitikus fv-k. Új szemléletet jelentenek Ezek a függvények nincsenek az SQL nyelvben Új függvény család

Download Presentation

Analitikus függvények

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Analitikusfüggvények Zoltán Botond

  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

  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 SELECTenameasnev, salas fizu, RANK() OVER (Orderbysal DESC) asnormr, DENSE_RANK() OVER (Orderbysal DESC) astomor, PERECENT_RANK() OVER (Orderbysal DESC) asszazFROM 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 createorreplaceviewnezetas selectemp.deptnoas részleg, COUNT(emp.deptno) as "dolgozók száma", RANK() OVER (Orderbycount(emp.deptno) desc) as rangsor Fromemp groupbyemp.deptno; Zoltán Botond

  14. Példa – 2. lépés selectnezet.*, dept.dname fromnezet, dept wherenezet.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 (Orderbysal DESC) asNormrang, DENSE_RANK(&fizu) WITHIN GROUP (Orderbysal DESC) asTomorrang, PERCENT_RANK(&fizu) WITHIN GROUP (Orderbysal DESC) asSzrangFROM 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&fizas "Megadott fizetés", deptnoas 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" Fromemp Group bydeptno; 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: Breakondeptnoonloc Selecte.deptno, loc, ename, sal, DENSE_RANK() OVER(orderbysaldesc) as sorrend Fromemp e, dept d Wheree.deptno = d.deptno and loc IN ('NEW YORK', 'CHICAGO'); Zoltán Botond

  22. Példa III. – Partíciós példa Partíciókkal: Breakondeptnoonloc Selecte.deptno, loc, ename, sal, DENSE_RANK() OVER(Partitionbye.deptno, orderbysaldesc) as sorrend Fromemp e, dept d Wheree.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

More Related