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

2. AB gyakorlat Egytáblás csoportosító lekérdezések.

Hasonló előadás


Az előadások a következő témára: "2. AB gyakorlat Egytáblás csoportosító lekérdezések."— Előadás másolata:

1 2. AB gyakorlat Egytáblás csoportosító lekérdezések

2 Csoportfüggvények: AVG STDDEV VARIANCE SUM MIN MAX COUNT

3 SELECT …,X+Y,…,f(U),g(V) FROM … WHERE … GROUP BY …, X+Y HAVING X+Y < 53; csop.képző attr.: szelekciós listában állhat nem csop.képző attr.: csak csoportfgv. paramétereként állhat szelekciós listában GROUP BY: csoportképzés WHERE: csoportba kerülő sorok szűrése HAVING: listába kerülő csoportok szűrése

4 Részlegenkénti legnagyobb fizetések: SELECT deptno, MAX(sal) FROM emp GROUP BY deptno;

5 A legkisebb, a legnagyobb és az átlagos részlegenkénti legnagyobb fizetések SELECT MIN(MAX(sal)), MAX(MAX(sal)), ROUND(AVG(MAX(sal))) FROM emp GROUP BY deptno;

6 Részlegenkénti létszámok: SELECT deptno, COUNT(*) FROM emp GROUP BY deptno;

7 A legkisebb, a legnagyobb és az átlagos- részlegenkénti létszámok: SELECT MIN(COUNT(*)), MAX(COUNT(*)), ROUND(AVG(COUNT(*)),2) FROM emp GROUP BY deptno;

8 2000-nél nagyobb átlagjövedelmű részlegek, a jövedelem szerint rendezve: SELECT deptno, ROUND(AVG(sal+NVL(comm,0))) AS átlagjövedelem FROM emp GROUP BY deptno HAVING ROUND(AVG(sal+NVL(comm,0))) > 2000 ORDER BY átlagjövedelem ASC;

9 Feladat Listázza az 1980.jan.01. és 1983.jan.01. között belépett, és 700 USD-nál magasabb jövedelmű dolgozókra vonatkozóan a részlegenkénti átlag fizetést. A lista ez utóbbi szerint legyen csökkenően rendezve, és használjon másodlagos oszlopneveket.

10 Megoldás SELECT Round(AVG(sal),2) AS "Átlag fizetés", deptno AS részleg FROM emp WHERE hiredate BETWEEN TO_DATE('1980.jan.01') AND TO_DATE('1983.jan.01') AND (sal + NVL(comm,0)) > 700 GROUP BY deptno ORDER BY "Átlag fizetés" DESC;

11 Feladat Listázza az 1981-ben belépett dolgozókra vonatkozóan a munkakörönkénti átlagfizetést, feltéve, hogy ez az átlag 1000 és 4000 USD közötti érték.

12 Megoldás SELECT ROUND(AVG(sal)) AS ÁTLAG, job AS Munkakör FROM emp WHERE TO_CHAR(hiredate,'YYYY')='1981' GROUP BY job HAVING ROUND(AVG(sal)) BETWEEN 1000 AND 4000 ORDER BY átlag DESC;

13 Feladat Listázza főnökönként (mgr) a jutalékban nem részesülő dolgozóinak átlagfizetést, feltéve, hogy ez az érték 1000 USD-nál több.

14 Megoldás SELECT AVG(sal) AS "Átlagfizetés", mgr AS "Főnök" FROM emp WHERE comm IS NULL AND mgr IS NOT NULL GROUP BY mgr HAVING AVG(sal) >1000 ORDER BY "Átlagfizetés" DESC;

15 Feladat Listázza részlegenként és minden részlegben munkakörönként a 3800 USD- nál alacsonyabb jövedelmű dolgozókra vonatkozóan az átlagjövedelmet. A lista részlegenként legyen növekvően rendezve.

16 Megoldás SELECT deptno AS részleg, job AS munkakör, ROUND(AVG(sal+NVL(comm,0))) AS Átlag FROM emp WHERE sal+NVL(comm,0) < 3800 GROUP BY deptno, job ORDER BY deptno ASC;

17 Feladat Írjon feltételeket a következőkre: –munkakörük elnevezésében „E” betűt tartalmazó dolgozókra („E” betűt nem tartalmazó dolgozókra) –munkakörönként a 25 évnél régebb óta dolgozó, Írja fel: a dolgozók munkában eltöltött átlagos hónapszámát Írjon feltételt: a dolgozók munkában eltöltött átlagos hónapszáma kisebb mint 300.

18 Feladat A dolgozó-azonosítók 3-mal való oszthatósága alapján képezzen csoportokat, és listázza e csoportokban a minimális jövedelmet, feltéve, hogy az nagyobb mint 800 USD.

19 Megoldás SELECT min(sal+ NVL(comm,0)) AS minimum, MOD(empno,3) AS oszthatóság FROM emp GROUP BY MOD(empno,3) HAVING min(sal+nvl(comm,0)) > 800;


Letölteni ppt "2. AB gyakorlat Egytáblás csoportosító lekérdezések."

Hasonló előadás


Google Hirdetések