Előadást letölteni
Az előadás letöltése folymat van. Kérjük, várjon
KiadtaTamás Péter Megváltozta több, mint 10 éve
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;
Hasonló előadás
© 2024 SlidePlayer.hu Inc.
All rights reserved.