5.GYAKORLAT (ADATBÁZISOK)
1.rész: Sorfüggvények
használata SQL lekérdezésekben
Témakör:
Az
SQL SELECT
utasítás
SELECT és WHERE záradékaiban szereplő
attribútumok különböző
típusaira kifejezések és a
sorfüggvények
használhatók.
Az Oracle SQL Lang.Ref. példáihoz hozzunk létre szinonimákat create_hr_synonym
I. Oracle
beépített
adattípusok: OracleTipusok.html
(forrás: Oracle
Data Types)
II. Oracle
beépített
függvények: SQL03_fuggvenyek.pdf
(lásd Oracle
Functions)
Feladatok: az előző 4.gyakorlaton (az IZH után) kiadott feladatsor megbeszélése
-- Táblák előkészítése az SQL-ben: createDolg (ez már volt)
Dolgozo (dkod, dnev, foglalkozas,
fonoke, belepes, fizetes, jutalek, oazon)
Osztaly (oazon, onev, telephely)
Fiz_Kategoria (kategoria, also, felso)
2.rész: Egy
táblára vonatkozó lekérdezések,
select utasítás záradékai
Témakör: csoportosítás és
összesítő
függvények használata:
SQL SELECT
utasítás GROUP BY, HAVING és ORDER BY
záradékai
Itt most először egy táblán (dolgozo)
ismerjük meg a SELECT záradékait,
majd köv.rész több táblára, FROM záradékban a külső
összekapcsolások
>> SQL04_csoportok.pdf
-
csoportosítás,
group by és having
záradékok
Feladatok:
1. Mennyi a legnagyobb fizetés a
dolgozók között? (max) és a legkisebb? (min)
2. Mennyi a dolgozók
összfizetése? (sum)
3. Adjuk meg, hogy hány
különböző foglalkozás fordul elő
a dolgozók között!
(count, count(distinct foglalkozas))
4. Mennyi a 10-es (és majd a 20-as, ill. 30-as) osztályon az
átlagfizetés? (avg)
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!
10. Adjuk meg a legmagasabb
osztályonkénti
átlagfizetést!
>> Önálló
gyakorlás: Oracle
Példatár Feladatok.pdf
2.fejezet 2.1-2.24 feladatok
3.rész:
Több táblás lekérdezések,
összekapcsolások, összesítések
>> SQL06_osszekapcsolas.pdf
- összekapcsolások, külső összekapcsolások
Összefoglaló az összekapcsolásokról (inner és outer join-ok)
-- Direkt szorzat: SELECT * FROM dolgozo,osztaly;
-- Joinok:
SELECT * FROM dolgozo NATURAL JOIN osztaly;
SELECT * FROM dolgozo JOIN osztaly ON dolgozo.oazon=osztaly.oazon;
-- Theta-join:
SELECT * FROM dolgozo JOIN fiz_kategoria
ON dolgozo.fizetes BETWEEN fiz_kategoria.also and fiz_kategoria.felso;
-- Külső joinok:
SELECT * FROM dolgozo LEFT JOIN osztaly ON dolgozo.oazon=osztaly.oazon;
SELECT * FROM dolgozo RIGHT JOIN osztaly ON dolgozo.oazon=osztaly.oazon;
SELECT * FROM dolgozo FULL JOIN osztaly ON dolgozo.oazon=osztaly.oazon;
Feladatok:
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.
>> folyt. a köv.gyak. lesznek az alkérdések (és a szemijoin és antijoin)
>> Önálló
gyakorlás: Oracle
Példatár Feladatok.pdf
3.fejezet feladatai