2.HETI GYAKORLAT (LEVELEZŐ INFO TANÁR - ADATBÁZISOK)
    
       
   1.rész: SQL SELECT és RELÁCIÓS ALGEBRA FELADATSOR /szeret tábla/
    Táblák előkészítése az SQL-ben: szeret;  
                Sémája: szeret (nev, gyumolcs)
    Feladatok rel.algebrai lekérdezésekre (alapműveletekkel)
--
 1. Kik szeretik az almát?
 2. Kik nem szeretik az almát? (de valami mást igen)
 3. Kik szeretik vagy az almát vagy a körtét?
 4. Kik szeretik az almát is és a körtét is?
 5. Kik azok, akik szeretik az almát, de nem szeretik a körtét?
 6. Kik szeretik vagy az almát vagy a körtét, de csak az egyiket?
--
 7. Kik szeretnek legalább kétféle gyümölcsöt?
 8. Kik szeretnek legalább háromféle gyümölcsöt?
 9. Kik szeretnek legfeljebb kétféle gyümölcsöt?
10. Kik szeretnek pontosan kétféle gyümölcsöt?
   

 
    2.rész: Többtáblás lekérdezések /Dolgozo, Osztaly, Fiz_Kategoria/
    Táblák előkészítése az SQL-ben: createDolg (az 1.héten ez már volt) 
 
        Dolgozo (dkod, dnev, foglalkozas, fonoke, belepes, fizetes, jutalek, oazon)      
        Osztaly (oazon, onev, telephely)
        Fiz_Kategoria (kategoria, also, felso)
   
  1. Kik azok a dolgozók, akiknek nincs főnöke?
  2. Kik azok a dolgozók, akiknek a főnöke KING? 
  3. Adjuk meg azoknak a főnököknek a nevét, akiknek a foglalkozása nem 'MANAGER'.
  4. Adjuk meg azokat a dolgozókat, akik többet keresnek a főnöküknél.
  5. Kik azok a dolgozók, akik főnökének a főnöke KING?
  6. Kik azok a dolgozók, akik osztályának telephelye DALLAS vagy CHICAGO?
  7. Kik azok a dolgozók, akik osztályának telephelye nem DALLAS és nem CHICAGO?
  8. Adjuk meg azoknak a nevét, akiknek a fizetése > 2000 vagy a CHICAGO-i osztályon dolgoznak.
  9. Melyik osztálynak nincs dolgozója?
 10. Adjuk meg azokat a dolgozókat, akiknek van 2000-nél nagyobb fizetésű beosztottja.
 11. Adjuk meg azokat a dolgozókat, akiknek nincs 2000-nél nagyobb fizetésű beosztottja.
 12. Adjuk meg azokat a telephelyeket, ahol van elemző (ANALYST) foglalkozású dolgozó.
 13. Adjuk meg azokat a telephelyeket, ahol nincs elemző (ANALYST) foglalkozású dolgozó.
 14. Adjuk meg azon osztályok nevét és telephelyét, amelyeknek van 1-es fizetési
        kategóriájú dolgozója.
 15. Adjuk meg azon osztályok nevét és telephelyét, amelyeknek  nincs 1-es fizetési
        kategóriájú dolgozója.
     
>> Önálló gyakorlás: Oracle Példatár Feladatok.pdf 3.fejezet feladataiból azok a típusok,
     amelyeket relációs algebrai kifejezésekkel is fel tudunk írni (SELECT lista = vetítés),
     (FROM lista = direkt szorzat, összekapcsolások), (WHERE felt = kiválasztás, szűrés)
     és halmazműveletek segítségével. A 3.fejezetben vannak olyan pédák, feladatok is,
     amit később veszünk, pl. hierarchikus lekérdezések, alkérdések nem lesznek a zh-án!  
   
 
   3.rész: Egy táblára vonatkozó csoportosítás, összesítő függvények 
     
   Témakör: Oracle gépes gyakorlat, az SQL SELECT utasítás GROUP BY, HAVING
   és ORDER BY záradékai, csoportosítás és összesítő függvények használata
   > Oracle Példák: SQL04_csoportok.pdf - összesítés, group by, 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
   

 
     4.rész: Több táblára vonatkozó csoportosítás, összesítő függvények 
   
    Ö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;
    
 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.