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