Az előadás letöltése folymat van. Kérjük, várjon

Az előadás letöltése folymat van. Kérjük, várjon

Összesítés és csoportosítás lekérdezésekben. Halmazműveletek.

Hasonló előadás


Az előadások a következő témára: "Összesítés és csoportosítás lekérdezésekben. Halmazműveletek."— Előadás másolata:

1 Összesítés és csoportosítás lekérdezésekben. Halmazműveletek.
sql04 csoportosítás, összesítés

2 Összesítés és csoportosítás

3 Gyűjtőfüggvények 1. Összesítő vagy aggregáló függvényeknek is nevezik őket Rekordok egy csoportjára csak egy értéket adnak vissza A NULL értékeket figyelmen kívül hagyják COUNT(mezőnév) azon rekordok száma, ahol az adott mező nem üres COUNT(*): a rekordok száma a táblában SUM(mezőnév) az adott oszlopban lévő értékek összege

4 Gyűjtőfüggvények 2. MIN(mezőnév) MAX(mezőnév) AVG(mezőnév)
az adott oszlopban lévő értékek minimuma MAX(mezőnév) az adott oszlopban lévő értékek maximuma AVG(mezőnév) az adott oszlopban lévő értékek átlaga STDDEV(mezőnév) az adott oszlopban lévő értékek szórása VARIANCE(mezőnév) az adott oszlopban lévő értékek szórásnégyzete average standard deviation

5 COUNT - példák SELECT COUNT(*) FROM vevok;
a vevok tábla sorainak száma SELECT COUNT(cikkszam) FROM rtetel WHERE egysegar > 100; azon rendelési tételek száma, ahol az egységár meghaladja az 100 Ft-ot

6 SUM - példák SELECT SUM(mennyiseg * egysegar) FROM rtetel WHERE rszam = 4; a 4-es számú rendelésen szereplő áruk összértéke SELECT SUM(mennyiseg) FROM rtetel; az összes megrendelt áru mennyisége (fajtától és mennyiségi egységtől függetlenül)

7 MIN, MAX, AVG - példa SELECT MIN(cikknev), MAX(egysegar), AVG(atlegysegar) FROM cikk A legolcsóbb áru, a legdrágább ár, és az ajánlott árak átlaga

8 STDDEV, VARIANCE példa SELECT STDDEV (egysegar), VARIANCE(atlegysegar) FROM cikk; A cikkek egységárának szórása és átlagos egységárának varianciája

9 Az adatok csoportosítása
SELECT … FROM … [WHERE …] GROUP BY kifejezés1 [, kifejezés2 … ]; Általában összesítő függvényekkel együtt használatos A SELECT utáni kifejezéseknek vagy a GROUP BY-nál is elő kell fordulni, vagy már a SELECT-nél egy összesítő függvényben kell szerepelni

10 GROUP BY - 1. példa SELECT cikkszam, AVG(mennyiseg) FROM rtetel GROUP BY cikkszam; A megrendeléseken szereplő cikkek cikkszámát és az átlagos megrendelt mennyiséget kapjuk Mellékhatásként a cikkszámok növekvő rendezése is megtörténik

11 Csoportosítás több mező szerint
A rendszer először az elsőként megadott mező értékei szerint képez csoportokat … … aztán minden csoportban alcsoportokat képez a második mező szerint … … aztán minden alcsoportban al-alcsoportokat képez a harmadik mező szerint … stb.

12 Csoportosítás több mező szerint - 1. példa
SELECT rszam, szall_hi, sum(mennyiseg * egysegar) as ertek FROM rtetel GROUP BY rszam, szall_hi; Megadja a rendelt áruk összértékét megrendelésenként, azon belül szállítási határidő szerint csoportosítva

13 Csoportosítás több mező szerint - 2. példa
SELECT min(nev1 || ‘ ‘ || nev2) as vevo, rtetel.rszam, sum(mennyiseg * egysegar) as ertek FROM vevok, rendel, rtetel WHERE vevok.vevokod = rendel.vevokod AND rendel.rszam = rtetel.rszam GROUP BY rendel.vevokod, rtetel.rszam; Megadja a rendelt áruk összértékét vevőnként, azon belül megrendelésenként csoportosítva Ha a GROUP BY után felcseréljük a mezőket, ugyanezeket az adatokat kapjuk, csak más sorrendben

14 Csoportosítás több mező szerint - 3. példa
SELECT min(nev1 || ‘ ‘ || nev2) as vevo, min(cikk.cikknev), sum(mennyiseg) as mennyi, avg(egysegar) as atlagos_egysegar, sum(mennyiseg * egysegar) as ertek FROM vevok, rendel, rtetel, cikk WHERE vevok.vevokod = rendel.vevokod AND rendel.rszam = rtetel.rszam AND rtetel.cikkszam = cikk.cikkszam GROUP BY rtetel.cikkszam, rendel.vevokod; Megadja a rendelt áruk mennyiségét, átlagos egységárát és összértékét vevőnként, azon belül cikkenként csoportosítva

15 Feltétel megadása a csoportosított adatokra
Alakja: HAVING feltétel A GROUP BY után áll A feltétel olyan, mint a WHERE után

16 HAVING - példa SELECT rszam, SUM(mennyiseg * egysegar) as ertek, COUNT(*) as tetelszam FROM rtetel GROUP BY rszam HAVING COUNT(*) <= 5; Megadja rendelésenként az összértéket és a tételszámot, de csak azok a megrendelések jelennek meg, amelyeken legfeljebb 5 tétel szerepel

17 … és még rendezni is lehet!
SELECT rszam, SUM(mennyiseg * egysegar) as ertek, COUNT(*) as tetelszam FROM rtetel GROUP BY rszam HAVING COUNT(*) <= 5 ORDER BY 2; Az előző példa adatai összérték szerint rendezve

18 A lekérdezések végrehajtási sorrendje
A rendszer kiválasztja a WHERE feltételnek eleget tevő sorokat Csoportosítja őket a GROUP BY szakasz előírásai szerint Kiszámítja minden csoportra az összesítő függvények értékét Kiválogatja a HAVING feltételnek eleget tevő sorokat Rendezi a megmaradt sorokat az ORDER BY előírásai szerint


Letölteni ppt "Összesítés és csoportosítás lekérdezésekben. Halmazműveletek."

Hasonló előadás


Google Hirdetések