5. gyakorlat
Aggregáló függvények
AVG([DISTINCT|ALL]n)- Null értékeket kihagyja
COUNT(*|[DISTINCT|ALL]expr)- Ha
*, akkor az összes elemszám, null értékkel együtt expresetén a nem null értékek száma
- Ha
MAXMINSUM- etc...
pl.
A COALESCE függvénnyel kikényszeríthető a nullértékeket tartalmazó sorok figyelembe vétele:
Adatcsoportok létrehozása
Csoportosítás utáni szűrés
Relációs algebra - kiterjesztett műveletek
- Ismétlődések megszüntetése: \(\delta\)
- Összesítő műveletek
- Csoportosítás
- Kiterjesztett vetítés
- Rendezési művelet
Csoportosítás
\(\gamma_{\text{színésznév}, MIN(\text{év})\to \text{elsőFilmÉv}}\)
A relációs algebrai kifejezést fel lehet írni fával is! (lásd. UW_52_KiterjAlg.pdf 6. oldal)
Feladatok
1. feladat
Adjuk meg azokat az osztályokat és átlagfizetéseket, ahol az nagyobb, mint 2000.
SELECT osztaly.onev, AVG(fizetes)
FROM dolgozo
NATURAL JOIN osztaly
GROUP BY osztaly.onev
HAVING AVG(fizetes)>2000;
2. feladat
Adjuk meg az átlagfizetéseket azokon az osztályokon, ahol legalább 4-en dolgoznak
SELECT oazon, AVG(fizetes), COUNT(*) "Dolgozók száma"
FROM dolgozo
GROUP BY oazon
HAVING COUNT(*) >= 4;
3. feladat
Adjuk meg az átlagfizetéseket és telephelyeket azokon az osztályokon, ahol legalább 4-en dolgoznak
SELECT oazon, osztaly.telephely, AVG(fizetes)
FROM dolgozo
NATURAL JOIN osztaly
GROUP BY oazon, osztaly.telephely
HAVING COUNT(*) >= 4;
4. feladat
Adjuk meg azon osztályok nevét és telephelyét, ahol az átlagfizetés nagyobb, mint 2000
SELECT onev, telephely
FROM dolgozo
NATURAL JOIN osztaly
GROUP BY oazon, osztaly.onev, telephely
HAVING AVG(fizetes) > 2000;
5. feladat
Adjuk meg azokat a fizetési kategoriákat, amelyekbe pontosan három dolgozó fizetése esik
SELECT kategoria FROM dolgozo
JOIN fiz_kategoria
ON fizetes BETWEEN fiz_kategoria.also and fiz_kategoria.felso
GROUP BY kategoria
HAVING COUNT(*) = 3;
6. feladat
Adjuk meg azon osztályok nevét és telephelyét, amelyen van 1-es fizetési kategóriájú dolgozó
SELECT osztaly.onev, osztaly.telephely
FROM dolgozo NATURAL JOIN osztaly, fiz_kategoria
WHERE fizetes BETWEEN also AND felso AND fiz_kategoria.kategoria = 1
GROUP BY onev, telephely;
7. feladat
Kik szeretnek minden gyümölcsöt?
SELECT nev FROM szeret
GROUP BY nev
HAVING COUNT(DISTINCT gyumolcs) = (SELECT COUNT(DISTINCT gyumolcs) FROM szeret);
ZH tartalma
- Ti írtatok relációs algebrai kifejezést és az SQL megfelelője
- Ő ad meg relációs kifejezést, és mondjuk meg, hogy mit csinál
Következő lapon: Gépes feladat
gyakorlatilag lehet hozzá használni mindent