3.GYAKORLAT (INFORMÁCIÓS RENDSZEREK)
    
   SQL egytáblás lekérdezések, vetítés és sorok kiválasztása műveletei
 -- Oracle SQL demo: SQL01_bevezetes.pdf  -- HR séma: Schema Diagrams
     Oracle segédanyagok: SQL02_select_lista.pdf;  SQL03_where_feltetel.pdf
     Az Oracle demo lekérdezésekhez elég szinonimát használni: createHRsyn.txt
  
 -- Gyakorlat példáihoz a táblák létrehozása Oracle SQL-ben: createDolgozo.txt 
     A mai órán csak a Dolgozo táblát használjuk (egy táblára vonatkozó lekérdezések)
 
     
       Osztaly (oazon, onev, telephely)
       Dolgozo (dkod, dnev, foglalkozas, fonoke, belepes, fizetes, jutalek, oazon)      
       Fiz_Kategoria (kategoria, also, felso)
  
   FELADATOK 1.RÉSZ Egy tábla lekérdezése
 
folyt. Az előző órán az 1.)-8.) lekérdezéseket próbáltuk ki, és ma megnézzük
ezek végrehajtását is az 6.-7.) feladatok végrehajtási terveit, innen folytatjuk:
    
--- SQL SELECT utasítás két kötelező záradéka: SELECT * FROM Dolgozo;
--- Oszlopokra (illetve kifejezésekre) való vetítés: SELECT lista 
 1.  Adjuk meg a dolgozók között előforduló foglalkozások neveit! (select lista)
 2.  Adjuk meg a dolgozók között előforduló foglalkozások neveit (DISTINCT is),
     az eredmény halmaz legyen, vagyis minden foglalkozást csak egyszer írjuk ki!
 3. Adjuk meg a dolgozók kódját, nevét és az éves fizetését, amikor kifejezést
     használunk az oszlopnevek helyén, ott adjunk új oszlopnevet ("éves fizetés")
   
--- Sorok kiválasztása: WHERE feltétel
 4. Kik azok a dolgozók, akiknek a fizetése > 2800? (kiválasztás, elemi feltételek)
 5. Adjuk meg azokat a dolgozókat, akiknek a foglalkozása 'MANAGER' (kar.tip.érték)

folyt. ma megnézzük meg a lekérdezésekhez tartozó végrehajtási terveket is:
 6. Kik azok a dolgozók, akiknek a fizetése 2000 és 4500 között van? (dkod, dnev)
     (1.mo: kiválasztás, összetett feltétel; 2.mo: where-ben: intervallum)
 7. Kik azok a dolgozók, akik a 10-es vagy a 20-as osztályon dolgoznak?
     (1.mo: kiválasztás, összetett feltétel; 2.mo: where-ben: in feltétel)

folyt. ma elkezdjük használni az Oracle SQL Lang.Ref. dokumentációt, amely 
a zárthelyi dolgozatok alatt az egyetlen megengedett segédletünk lesz: 
 8. Adjuk meg azon dolgozókat, akik nevének második betűje 'A' (where: like)
 
--- NULL hiányzó érték, lásd SQL Lang.Ref. Nulls, 3 értékű logika, lásd igazságtábla
 9. Kik azok a dolgozók, akiknek a jutaléka nagyobb, mint 600?
10. Kik azok a dolgozók, akiknek a jutaléka kisebb-vagy-egyenlő, mint 600?
11. Kik azok a dolgozók, akiknek a jutaléka ismeretlen/hiányzó adat. (NULL felt)
12. Kik azok a dolgozók, akiknek a jutaléka ismert (vagyis nem NULL)
   
--- Az eredménytábla sorainak rendezése (SELECT utasítás ORDER BY záradéka)
     (Ez itt nem alap relációs algebrai művelet, de az SQL lekérdezésekben hasznos)
13. Listázzuk ki a dolgozókat foglalkozásonként, azon belül nevenként rendezve.
14. Listázzuk ki a dolgozókat fizetés szerint csökkenőleg rendezve.
15. Rendezés segítségével az első N sor elérése Oracle 12.2 adatbázisban,
      lásd Row Limiting Examples.html (forrás: Oracle Database SQL Lang. Ref. html)
  
   
    II.rész: Sorfüggvények: Az SQL SELECT utasítás SELECT és WHERE záradékaiban 
   az attribútumok különböző típusaira kifejezések és a sorfüggvények használhatók.
   - Oracle segédanyag: SQL05_fuggvenyek.pdf  példák beépített sorfüggvényekre
   - Oracle Példatár 1.fejezet Egyszerű lekérdezések Sorfüggvények 19.o-44.o.pdf
   - Oracle beépített adattípusok: Oracle_tipusok.txt (összefoglaló), részletesen:
     SQL Lang.Ref. -> 2 Basic Elements -> Data Types -> Oracle Data Types.html
   - A fontosabb sorfüggvények: Oracle_fv.pdf (összefoglaló), részletesen példákkal:
     SQL Lang.Ref. -> 7 Functions -> Single-Row Functions -> Oracle Functions.html
   
   - Az alábbi órai feladatokhoz a táblák, mint eddig createDolgozo.txt (volt)
       Osztaly (oazon, onev, telephely)
       Dolgozo (dkod, dnev, foglalkozas, fonoke, belepes, fizetes, jutalek, oazon)      
       Fiz_Kategoria (kategoria, also, felso)
      
--- Numerikus függvények 
 1. Adjuk meg dolgozók nevét és az éves fizetését százasokra kerekítve, akik
     a 10-es osztályon dolgoznak. (SQL Lang.Ref. -> ROUND itt szereplő példák)
 2. Adjuk meg azon dolgozókat, akik fizetése osztható 15-tel.
 3. Adjuk meg a dolgozók fizetéseinek négyzetgyökét két tizedesre, és ennek egészrészét.
    
--- Karakterkezelő függvények
     (Megj.: 4.f. és 5.f. volt 2.gyak. where feltételben: LIKE feltétel, de itt most
      többféle megoldást is keressünk sorfüggvényekkel -> SUBSTRINSTR, stb)
 4. Adjuk meg azon dolgozókat, akik nevének második betűje 'A' 
 5. Adjuk meg azon dolgozókat, akik nevében van legalább két 'L' betű.
 6. Adjuk meg a dolgozók nevének utolsó három betűjét.
 7. Adjuk meg azon dolgozókat, akik nevének utolsó előtti betűje 'T'.
   
--- Konverziós függvények és dátumkezelő függvények
 8. Kik azok a dolgozók, akik '1982.01.01.' után léptek be? (TO_DATE-re példák)
 9. Adjuk meg, hogy hány hete dolgozik a cégnél ADAMS és milyen hónapban
     és milyen nap (hétfő, kedd, stb. magyar/angol) lépett be (dátum formátumok)
10. Adjuk meg azokat a dolgozókat, akik keddi napon léptek be.
     (Vigyázzunk a visszaadott értékkel!)
11.*Adjuk meg, hogy hány nap/hónap volt KING és JONES belépési dátuma között?
      (Tegyük fel, hogy pontosan egy KING és pontosan egy JONES nevű dolgozó van) 
      [* 5.gyak.visszatérünk: skalár helyett skalárérétékű (SFW) lekérdezés is lehet!]
12. Adjuk meg, hogy milyen napra esett KING belépési dátuma hónapjának utolsó napja.
13. Adjuk meg, hogy milyen napra esett KING belépési dátuma hónapjának első napja.
14. Számoljuk ki, egészekre kerekítve, hogy a mai nap hány naposak vagyunk,
      azt is, hogy hány hetesek, továbbá hány hónaposak vagyunk (DUAL tábla)

folyt.köv.órán