6.GYAKORLAT (ADATBÁZISOK)
Témakörök:
I.rész: Kiterjesztett relációs algebra --- Relax-ban: dbis uibk github io/relax
II.rész: Alkérdések az SQL SELECT
utasítás FROM, WHERE, HAVING záradékaiban
-- Táblák létrehozása: Dolgozo, Osztaly
táblák (no constraints)
Dolgozo (dkod, dnev, foglalkozas,
fonoke, belepes, fizetes, jutalek, oazon)
Osztaly (oazon, onev, telephely)
Fiz_Kategoria (kategoria, also, felso)
4.rész: Nézzük meg az előző 2-3.rész feladatait most kiterj.rel.algebrában
Ezeket oldjuk meg kiterjesztett relációs algebrában: dbis uibk github io/relax
-- Egy táblás lekérdezések (5.gyak. 2.rész feladataiból, de most
kiterj.rel.algebrával)
5. Adjuk meg az átlagfizetést az egyes osztályokon! (csoportosítás: group by oazon)
6. Adjuk meg az átlagfizetést és azt, hogy hányan dolgoznak az egyes osztályokon,
de csak azokra ahol legalább ketten dolgoznak
7. Adjuk meg az átlagfizetést és azt, hogy hányan dolgoznak az egyes osztályokon,
de csak azokra ahol legalább ketten dolgoznak. Csak azoknak a dolgozóknak
számoljuk bele a fizetését, akiknek a fizetése nagyobb mint 1000
8. Adjuk meg azokra az
osztályokra az
átlagfizetést, ahol ez nagyobb mint 2000.
9. Adjuk meg osztályonként az
ott dolgozó hivatalnokok (FOGLALKOZAS='CLERK')
átlagfizetését, de csak
azokon az osztályokon, ahol legalább
két hivatalnok dolgozik!
-- Több táblás lekérdezések (5.gyak.
3.rész feladataiból kiterj.rel.algebrával)
1. Adjuk meg osztályonként az osztályok
nevét, telephelyét és az
átlagfizetést.
2. Adjuk meg osztályonként az osztályok
nevét, telephelyét és az
átlagfizetést,
ahol az átlagfizetés nagyobb mint 2000.
3. Adjuk meg az átlagfizetést és telephelyet azokon az osztályokon, ahol legalább
ketten dolgoznak.
4. Adjuk meg azokat a fizetési kategóriákat, amelybe pontosan 3 dolgozó fizetése esik.
5. Adjuk meg azokat a fizetési kategóriákat, amelyekbe eső dolgozók mindannyian
ugyanazon az osztályon dolgoznak.
6. Adjuk meg azon osztályok nevét és telephelyét, amelyeknek van 1-es fizetési
kategóriájú dolgozója.
7. Adjuk meg azon osztályok nevét és telephelyét, amelyeknek legalább 2 fő
1-es fizetésű kategóriájú dolgozója van.
8. Adjuk meg azokat a fizetési
kategóriákat,
amelyekbe beleesik legalább három
olyan dolgozónak a fizetése, akinek nincs beosztottja.
9. Adjuk meg azokat a foglalkozásokat, amelyek
csak egyetlen osztályon fordulnak elő.
10. Adjuk meg osztályonként a
dolgozók
összfizetését az osztály
nevét megjelenítve
ONEV, SUM(FIZETES) formában,
és azok
az osztályok is jelenjenek meg ahol
nem dolgozik senki, ott az
összfizetés 0
legyen. Valamint ha van olyan dolgozó,
akinek nincs megadva, hogy mely
osztályon
dolgozik, azokat a dolgozókat
egy 'FIKTIV' nevű osztályon
gyűjtsük
össze. Minden osztályt a nevével plusz
ezt a 'FIKTIV' osztált is
jelenítsük meg az itt dolgozók
összfizetésével
együtt.
5.rész: Többtáblás lekérdezések, alkérdések (FROM, WHERE, HAVING)
> Többtáblás: SQL05_set_operators.pdf; SQL06_osszekapcsolas.pdf
> Alkérdések: SQL07_subquery1.pdf; SQL08_subquery2.pdf
Alkérdések használata a WHERE feltételben
1. Kik azok és
melyik telephelyen dolgoznak a
legnagyobb fizetésű dolgozók?
2. Adjuk meg osztályonként a
minimális fizetést, de csak azokat az
osztályokét, ahol
a minimális
fizetés nagyobb, mint a 30-as osztályon
dolgozók minimális fizetése.
3. Adjuk meg, hogy mely dolgozók
fizetése jobb,
mint a saját osztályán (vagyis
azon az osztályon, ahol
dolgozik az ott) dolgozók
átlagfizetése! (korrelált)
4. Adjuk meg osztályonként a legnagyobb
fizetésű dolgozó(k) minden adatát.
5. Adjuk meg a legrosszabbul kereső főnök
fizetését, és fizetési
kategóriáját.
Folyt. a köv.7.gyak: SQL DML utasítások (INSERT, DELETE, UPDATE)
SQL DML utasítások
segítségével mindig egy tábla
tartalmát módosítjuk, és
itt is a WHERE-ben fogunk alkérdéseket
használni, alkérdés témát folytatjuk!
-- -- --
>> Önálló
gyakorlás: Oracle
Példatár Feladatok.pdf
3.fejezet feladatai
6.rész: Feladatok kiterjesztett relációs algebrában: feladat6.pdf