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

2012. tavaszi félév Véső Tamás. Kérdezze le minden dolgozó nevét, jövedelmét, részlegének nevét és a részlegében dolgozók legkisebb és legnagyobb jövedelmét,

Hasonló előadás


Az előadások a következő témára: "2012. tavaszi félév Véső Tamás. Kérdezze le minden dolgozó nevét, jövedelmét, részlegének nevét és a részlegében dolgozók legkisebb és legnagyobb jövedelmét,"— Előadás másolata:

1 2012. tavaszi félév Véső Tamás

2 Kérdezze le minden dolgozó nevét, jövedelmét, részlegének nevét és a részlegében dolgozók legkisebb és legnagyobb jövedelmét, végül pedig a dolgozó jövedelembeállási értékét (vagyis a jövedelmének és az iménti legkisebb értéknek különbségét). A lista legyen a jövedelembeállás alapján rendezve, és használjon másodlagos oszlopneveket.

3 Keressük meg a lekérdezéseket (általában valamilyen kötőszóval vannak összekapcsolva a feladatban is) Kérdezze le minden dolgozó nevét, jövedelmét, részlegének nevét (dept táblában a dname) és a részlegében dolgozók legkisebb jövedelmét, végül pedig a dolgozó jövedelembeállási értékét (jövedelmének és a legkisebb jövedelem különbségét). A lista legyen a név alapján rendezve, és használjon másodlagos oszlopneveket.

4 allekérdezéssel  A kidolgozás során mindig az allekérdezéssel kezdjünk. ◦ A részlegében dolgozók legkisebb és legnagyobb jövedelmét SELECT MIN(sal+NVL(comm,0)) AS minimumfizetés, deptno AS részleg FROM emp GROUP BY deptno;

5  Kérdezze le minden dolgozó nevét, jövedelmét, részlegének nevét és a részlegében dolgozók legkisebb jövedelmét végül pedig a dolgozó jövedelembeállási értékét.  Vegyük észre, hogy bele kell vennünk az allekérdezést a külső lekérdezésbe.

6  Mi kell a külső lekérdezésünkbe ◦ Dolgozó neve ◦ Jövedelme ◦ Részlegének neve ◦ A vele egy csoportban dolgozók legkisebb jövedelme ◦ A jövedelembeállás

7 SELECT dolgozó.ename, dolgozó.sal + NVL(dolgozó.comm,0) as fizu, telephely.dname, allek.minimumfizetés, /* elhagyható az allek, ha egyedi */ /*az allekérdezésben a másodlagos oszlpnév*/ dolgozó.sal + NVL(dolgozó.comm,0) - minimumfizetés as beáll FROM emp dolgozó, dept telephely, (SELECT MIN(sal+NVL(comm,0)) AS minimumfizetés, deptno AS részleg FROM emp GROUP BY deptno) allek /* itt nem hagyjuk el sose a másodlagos */ WHERE telephely.deptno = allek.részleg AND /*táblanevet*/ telephely.deptno = dolgozó.deptno ORDER BY dolgozó.ename;

8  Az allekérdezést mindig zárójelbe kell, hogy tegyük a másodlagos táblanév adása miatt.  PL.: (SELECT MIN(sal+NVL(comm,0)) AS minimumfizetés, deptno AS részleg FROM emp GROUP BY deptno) allek NEM  Megjegyzés: Másodlagos táblanévadáskor NEM használunk AS kulcsszót!!!

9  Az allekérdezésben használt másodlagos oszlopneveket használjuk a külső SELECT- ben, mintha csak az emp táblából kérdeznénk oszlopokat.  Ha nem egyedi az oszlopnevünk akkor a táblanév.oszlop hivatkozással pontosan meg kell adjuk melyik tábláról van szó. Pl.: telephely.deptno = dolgozó.deptno

10  A táblák felsorolásánál is,-t használunk kivéve az utolsó táblát (allekérdezést). Pl.: … emp dolgozó, dept telephely, (SELECT MIN(sal+NVL(comm,0)) AS minimumfizetés, deptno AS részleg FROM emp GROUP BY deptno) allek … Itt már nincs vessző

11  A WHERE-ben ne felejtsük összekapcsolni a táblákat. ◦ Ki lehet próbálni mi történik, ha elhagyjuk a WHERE részt.  A WHERE-ben az a fontos, hogy minden tábla össze legyen kapcsolva a megfelelő oszlop(okk)al. ◦ WHERE telephely.deptno = allek.részleg AND telephely.deptno = dolgozó.deptno ◦ WHERE dolgozó.deptno = allek.részleg AND telephely.deptno = dolgozó.deptno ◦ Ugyanazt az eredményt adja

12 Írja ki minden dolgozó nevét, jövedelmét, munkakörének nevét, továbbá a munkakörében dolgozók összjövedelmét, végül pedig a dolgozó jövedelembeállási értékét (mekkora az összjövedelem és a dolgozó jövedelmének különbsége), úgy hogy a jövedelem szerint rendezzünk növekvően.

13 SELECT ename AS "Dolgozó neve", sal+NVL(comm,0) AS jövedelem, dolgozó.job AS munkakör, összjövedelem, összjövedelem - sal+NVL(comm,0) AS jövbeáll FROM emp dolgozó, (SELECT SUM(sal+NVL(comm,0)) AS összjövedelem, job FROM emp GROUP BY job) allek WHERE dolgozó.job = allek.job ORDER BY jövedelem;


Letölteni ppt "2012. tavaszi félév Véső Tamás. Kérdezze le minden dolgozó nevét, jövedelmét, részlegének nevét és a részlegében dolgozók legkisebb és legnagyobb jövedelmét,"

Hasonló előadás


Google Hirdetések