6.GYAKORLAT (ADATBÁZISOK)
   
   Témakörök: 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
   1.rész: először egy táblán (dolgozo) ismerjük meg a SELECT záradékait,
   2.rész: majd több táblára, FROM záradékban a külső összekapcsolások
   
   --- Táblák létrehozása, lásd createDolg (az 1.gyak.-ról már megvan)  
   
        Dolgozo (dkod, dnev, foglalkozas, fonoke, belepes, fizetes, jutalek, oazon)      
        Osztaly (oazon, onev, telephely)
        Fiz_Kategoria (kategoria, also, felso)
 

   
 1.rész: Egy táblára vonatkozó lekérdezések, select utasítás záradékai  
             >> SQL04_csoportok.pdf - csoportosítás, group by és having záradékok
 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
   

   
  2.rész: Több táblás lekérdezések, összekapcsolások, csoportosítás, ö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;
    
     Megj.: Köv.héten alkérdések, a *jelölt feladatokat a köv.héten beszéljük meg!
 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.* Kik azok és melyik telephelyen dolgoznak a legnagyobb fizetésű dolgozók?
11.* 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.
12.* 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)
13.* Adjuk meg osztályonként a legnagyobb fizetésű dolgozó(k) minden adatát.
14.* Adjuk meg a legrosszabbul kereső főnök fizetését, és fizetési kategóriáját. 
15. Adjuk meg azoknak a dolgozóknak a nevét és fizetését, akik fizetése a 10-es és
     20-as osztályok átlagfizetése közé esik. (Nem tudjuk, hogy melyik átlag a nagyobb!)
16. 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. köv.gyak. is ugyanezekkel a feladatokkal foglalkozunk, folytatjuk
>> Önálló gyakorlás: Oracle Példatár Feladatok.pdf 3.fejezet feladatai