A lekérdezésekhez NIKOVITS felhasználó tulajdonában levő táblákat használjuk! Elérése: tulajdonos.táblanév NIKOVITS.DOLGOZO (dkod, dnev, foglalkozas, fonoke, belepes, fizetes, jutalek, oazon) NIKOVITS.OSZTALY (oazon, onev, telephely) NIKOVITS.CIKK (ckod, cnev, szin, suly) NIKOVITS.PROJEKT (pkod, pnev, helyszin) NIKOVITS.SZALLITO (szkod, sznev, statusz, telephely) NIKOVITS.SZALLIT (szkod, ckod, pkod, mennyiseg, datum) Nézet táblák (VIEW) -- Melyik cikket szállítják a legtöbb projekthez? CREATE OR REPLACE VIEW v_cikk_proj_db AS SELECT cikk.ckod ckod, cnev, COUNT(DISTINCT pkod) darab FROM nikovits.cikk, nikovits.szallit WHERE cikk.ckod=szallit.ckod GROUP BY cikk.ckod, cnev; SELECT ckod, cnev FROM v_cikk_proj_db WHERE darab = (SELECT MAX(darab) FROM v_cikk_proj_db); A lekérdezés úgy is megadható, hogy ne kelljen nézetet létrehozni. Az alábbi lekérdezésben a "nézet" csak a lekérdezés idejére jön létre. Ezt úgy is hívjuk, hogy INLINE nézet. SELECT ckod, cnev FROM (SELECT cikk.ckod ckod, cnev, COUNT(DISTINCT pkod) darab FROM nikovits.cikk, nikovits.szallit WHERE cikk.ckod=szallit.ckod GROUP BY cikk.ckod, cnev) cikk_proj_db WHERE darab = (SELECT MAX(darab) FROM (SELECT cikk.ckod ckod, cnev, COUNT(DISTINCT pkod) darab FROM nikovits.cikk, nikovits.szallit WHERE cikk.ckod=szallit.ckod GROUP BY cikk.ckod, cnev) ) ; A fenti lekérdezésben kétszer kellett leírnunk ugyanazt a "nézetet" -> cikk_proj_db Ezt megspórolhatjuk az alábbi szintaxissal. Most is csak a lekérdezés idejére jön létre a nézet. WITH cikk_proj_db AS ( SELECT cikk.ckod ckod, cnev, COUNT(DISTINCT pkod) darab FROM nikovits.cikk, nikovits.szallit WHERE cikk.ckod=szallit.ckod GROUP BY cikk.ckod, cnev) SELECT ckod, cnev FROM cikk_proj_db WHERE darab = (SELECT MAX(darab) FROM cikk_proj_db); Képezzük osztályonként az összfizetést, vegyük ezen számok átlagát, és adjuk meg, hogy mely osztályokon nagyobb ennél az átlagnál az összfizetés. CREATE OR REPLACE VIEW v_osztaly_osszfiz AS SELECT onev, SUM(fizetes) ossz_fiz FROM nikovits.dolgozo d, nikovits.osztaly o WHERE d.oazon = o.oazon GROUP BY onev; CREATE OR REPLACE VIEW v_atlag_koltseg AS SELECT SUM(ossz_fiz)/COUNT(*) atlag FROM v_osztaly_osszfiz; SELECT * FROM v_osztaly_osszfiz WHERE ossz_fiz > (SELECT atlag FROM v_atlag_koltseg) Ugyanez WITH-del megadva: WITH osztaly_osszfiz AS ( SELECT onev, SUM(fizetes) ossz_fiz FROM nikovits.dolgozo d, nikovits.osztaly o WHERE d.oazon = o.oazon GROUP BY onev), atlag_koltseg AS ( SELECT SUM(ossz_fiz)/COUNT(*) atlag FROM osztaly_osszfiz) SELECT * FROM osztaly_osszfiz WHERE ossz_fiz > (SELECT atlag FROM atlag_koltseg)