Ablak módszer Rózsa Győző
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!
PARTITION BY • Résztartományokat (partíciókat) jelöl ki a végrehajtáshoz • Pl: Állítsunk föl fizetési rangsort munkakörönként select ename as nev, job as munkakor, sal as fizu, RANK() OVER (PARTITION BY job ORDER BY sal DESC) as RANG from emp ORDER BY job, RANG;
Ablak tag • Aktuális partíción belül kijelöli a munkaterületet • Kétféleképpen tudja megtenni – Fizikailag • ROWS BETWEEN a PRECEEDING AND b FOLLOWING – Logikailag • RANGE BETWEEN [UNBOUNDED PRECEDING/CURRENT ROW] AND [CURRENT ROW/UNBOUNDED FOLLOWING] • RANGE [UNBOUNDED PRECEDING/CURRENT ROW]
Ablak tag • CURRENT ROW – A partíció Aktuális sorától/soráig • UNBOUNDED PRECEDING – A partíció első sorától kezdődően • UNBOUNDED FOLLOWING – A partíció utolsó soráig
Ablak tag példa • Listázzuk a dolgozók nevét, fizetését, valamit a fizetésük folyamatosan halmozott (kumulált) összegét! SELECT ename as nev, sal as fizu, SUM(sal) OVER (ORDER BY sal RANGE UNBOUNDED PRECEDING) as kumulalt FROM emp;
Ablak tag példa 2 • Bővítsük a feladatot azzal, hogy a kommulált összeget részlegenként vesszük • PARTITION BY utasítást kell használjuk hozzá SELECT ename as nev, sal as fizu, deptno as reszleg, SUM(sal) OVER (PARTITION BY deptno ORDER BY sal RANGE UNBOUNDED PRECEDING) as kumulalt FROM emp;
Ablak példa 3 • Listázzuk ki a dolgozók nevét, fizetését, valamint mutassa az aktuális sor előtti és utáni dolgozók összfizetését, illetve a kumulált fizetéseket. • Ezt együtt írjuk meg;) • Nem lustulunk;)
Köszönöm a figyelmeteket!