Részletező csoportosítások 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!
ROLLUP GROUP BY résznél használjuk Segítségével egy lekérdezésen belül egyszerűen juthatunk olyan adatokhoz, melyhez minimum két külön lekérdezést kellene írnunk
ROLLUP - példa Írjuk meg egy szkriptbe a következő lekérdezéseket: SELECT job, deptno, avg(sal) FROM emp GROUP BY job, deptno; SELECT job, deptno, avg(sal) FROM emp GROUP BY ROLLUP (job, deptno); SELECT job, deptno, avg(sal) FROM emp GROUP BY ROLLUP (deptno, job);
DECODE fv használata (Ismétlés) Mi van, ha szeretnénk kiírni, hogy a munkakörök átlagfizetése, illetve az összes átlagfizetés? NVL fv segítségével megoldható lenne… Nézzük meg, hogy milyen hibaüzenetet kapunk.
DECODE fv használata - KÓD select nvl(job,'Átlag') as Munkakör, DECODE(nvl(job,'x'), 'x', null, nvl(to_char(deptno), 'Munkakörösszes')) as részleg, avg(sal) as atlag from emp group by rollup (job, deptno);
CUBE operátor Hasonló a ROLLUP-hoz, de minden kombinációt előállít, míg a ROLLUP csak az adott sorrendhez tartozót Próbáljuk ki együtt a különbséget!
GROUPING fv Indikátor fv Megmutatja, hogy csoportosítás a ROLLUP/CUBE fv-nél éppen melyik alapján készült 1 az értéke, ha az adott sor felelős 0 ha az adott sor nem felelős GROUPING_ID fv-vel több oszlopot is nézhetünk
GROUPING SETS fv GROUP BY kiegészítése Segítségével több szempont alapján is csoportosíthatunk
select job, deptno, avg(sal) from emp group by job, deptno ORDER BY job; select job, deptno, avg(sal) from emp group by GROUPING SETS((job, deptno), (job)) ORDER BY job;
Köszönöm a figyelmeteket!