7.FELADATSOR (INFORMÁCIÓS RENDSZEREK)
 

 
   I. Több táblás lekérdezések, csoportosítás, összesítő függvények használata 
   >> Oracle DB SQL példák: SQL07_osszekapcsolas.pdf
   >> Oracle DB SQL Lang.Ref >> Joins (Self Joins, Inner Joins, Outer Joins)

  
>> Gyakorlat példái: Dolgozo, Osztaly, Fiz_Kategoria táblák: createDolg.txt 
        Dolgozo (dkod, dnev, foglalkozas, fonoke, belepes, fizetes, jutalek, oazon)      
        Osztaly (oazon, onev, telephely)
        Fiz_Kategoria (kategoria, also, felso)
   
   >> Folyt.előző gyak: Szorzások, összekapcsolások a FROM listán (összefoglaló)  
   -- Direkt szorzat: SELECT * FROM dolgozo, osztaly;
   -- Természetes összekapcsolás és az inner join összehasonlítása:
      SELECT dkod, dnev, oazon, onev FROM dolgozo NATURAL JOIN osztaly;
      SELECT dkod, dnev, dolgozo.oazon, onev FROM dolgozo, osztaly
                   WHERE dolgozo.oazon=osztaly.oazon;
      SELECT dkod, dnev, dolgozo.oazon, onev FROM dolgozo JOIN osztaly
                   ON dolgozo.oazon=osztaly.oazon;
  -- Theta-join: 
      SELECT * FROM dolgozo JOIN fiz_kategoria ON fizetes BETWEEN also and felso;
      SELECT * FROM dolgozo JOIN fiz_kategoria ON fizetes >= also and fizetes <= felso;
 
  -- Külső összekapcsolások/outer 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;
  
      -- Külső összekapcsolások három típusa:
         SELECT tábla1.oszlop, tábla2.oszlop
         [{LEFT | RIGHT | FULL} OUTER JOIN tábla2
         ON (tábla1.oszlopnév = tábla2.oszlopnév)]
   
   Feladatok: Teljes select utasítás, záradékok sorrendje

         SELECT kif, ..., kif --- [ha van group by, akkor csop.kif., ... csopfv(kif), ...]
          FROM táblák összekapcsolása
          [WHERE sorok kiválasztási feltétel]
          [GROUP BY csop.attr, csop.kif, ...]
          [HAVING csop.kiválasztási feltétel]
          [ORDER BY kif, ...];

    Több táblás lekérdezések, összekapcsolások, csoportosítás, összesítések
 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 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. 
 

   
   II.RÉSZ  Az alkérdéseket használata FROM, WHERE és HAVING záradékokban
   >> Oracle DB SQL példák: SQL08_alkerdes1.pdf;   SQL08_alkerdes2.pdf
   >> Az alkérdések témakörben nézünk példákat szemijoinra, antijoinra.
 
 -- Alkérdések  (SFW) bezárójelezett SQL-lekérdezések     

 -- FROM listán: táblák listája, (SFW) sorvaltozo, ...
     Példa: Adjuk meg a szeret(nev, gyumolcs) tábla alapján, hogy
                kik szeretnek minden gyümölcsöt.
     
 --  WHERE és HAVING záradékban:
      (a) t theta (SFW)   -- ahol theta az aritmetikai összehasonlítás jele
      (b) t theta ANY/ALL(SFW)
      (c) t [NOT] IN (SFW)
      (d) [NOT] EXISTS (SFW)
 
 -- Példa: Adjuk meg azoknak a dolgozókat, akiknek a legnagyobb a fizetésük.
     Az alábbi típusú alkérdések közül melyeknél használható (a), (b), (c) ill.(d)?
       1.) skalárértéket adó alkérdések
       2.) skalárértékekből álló halmazt illetve multihalmazt adó alkérdések
       3.) teljes, többdimenziós tábla 
       
   Feladatok több táblára és alkérdésekre - dolgozo, osztaly, fiz_kategoria
 1. Skalárértékű alkérdéssel:
     Kik azok és milyen munkakörben dolgoznak a legnagyobb fizetésű dolgozók?
 2. Skalárhalmaz értékű alkérdéssel:
     Kik azok és milyen munkakörben dolgoznak a legnagyobb fizetésű dolgozók?
 3. Korrelált alkérdéssel:
     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!
 4. Adjuk meg azokat a foglalkozásokat, amelyek csak egyetlen osztályon fordulnak elő,
     és adjuk meg hozzájuk azt az osztályt is, ahol van ilyen foglalkozású dolgozó.
 5. Adjuk meg osztályonként a legnagyobb fizetésu dolgozó(ka)t, és a fizetést.
 6. Adjuk meg, hogy az egyes osztályokon hány ember dolgozik (azt is, ahol 0=senki).
 7. Adjuk meg azokat a fizetési kategóriákat, amelyekbe beleesik legalább három
     olyan dolgozónak a fizetése, akinek nincs beosztottja.
 8. Adjuk meg a legrosszabbul kereső főnök fizetését, és fizetési kategóriáját. 
 9. Adjuk meg, hogy (kerekítve) hány hónapja dolgoznak a cégnél azok a dolgozók,
     akiknek a DALLAS-i telephelyű osztályon a legnagyobb a fizetésük.
10. Adjuk meg azokat a foglalkozásokat, amelyek csak egyetlen osztályon fordulnak elő,
     és adjuk meg hozzájuk azt az osztályt is, ahol van ilyen foglalkozású dolgozó.
   
   Visszatérve: Több táblás lekérdezések, direkt szorzat, alkérdések
   >> Gyakorlat példái: createSzeret.txt  séma: Szeret (nev, gyumolcs)
   -- 5.feladatsor folyt. "minden" kifejezése SQL-ben (többféle megoldással is!)
11. Kik szeretnek minden gyümölcsöt?
     (Kik szeretik az összes olyan gyümölcsöt, amit valaki szeret?)
12. Kik azok, akik legalább azokat a gyümölcsöket szeretik, mint Micimackó?
13. Kik azok, akik legfeljebb azokat a gyümölcsöket szeretik, mint Micimackó?
14. Kik azok, akik pontosan azokat a gyümölcsöket szeretik, mint Micimackó?
   
   >> Önálló gyakorlás: Oracle Példatár Feladatok.pdf 3.fejezet feladatai