Összesítő függvények és adatok összegzése
Szeretnél az ünnepek alatt is gyakorolni? Vár az Easter Bug Hunt játékunk! Csatlakozz, és keresd meg az összes hibát - akár még jutalom is ütheti a markod!
Irány a játékAmikor nagyobb adatmennyiséggel dolgozunk, sokszor nincs szükségünk az egyedülálló adatokra, hanem csak azok összegére, minimumára, maximumára, esetleg átlagára vagyunk kíváncsiak. Ezekben az esetekben a MySQL összesítő függvényeit tudjuk felhasználni, amelyeket általában közvetlenül a SELECT kulcsszó után, a lekérendő mezők felsorolásában használunk. A fontosabb MySQL összesítőfüggvények az alábbiak:
- MIN: az adatok minimumát adja meg, azaz a mezőben szereplő értékek közül a legkisebbet
- MAX: az adatok maximumát adja meg, azaz a mezőben szereplő értékek közül a legnagyobbat
- AVG: az értékek átlagát határozza meg
- SUM: az adatok összegét adja meg
- COUNT: az értékek számát adja meg (de a DISTINCT kulcsszóval együtt használható az egyedi értékek meghatározására is – lásd: lentebb)
Az összesítő függvényeket általában a SELECT-ben használjuk. Határozzuk meg például az adatbázisban található érdemjegyek átlagát:
SELECT AVG(`jegy`) FROM `jegy`
Ez a lekérdezés mindössze egy darab értéket fog visszaadni, amiben a jegyek átlagát találjuk meg. Ehhez hasonlóan, ha a diak táblában található diákok számára vagyunk kíváncsiak, ezt is könnyedén lekérdezhetjük a COUNT használatával:
SELECT COUNT(`id`) FROM `diak`
Érdemes megjegyezni, hogy megszámlálás esetén általában a rekordokat magukat szeretnénk megszámolni. Ezesetben nem feltétlen szükséges konkrét mezőt megadni – a COUNT(*) utasítással is meghatározhatjuk, ezzel a lekérdezésünk átláthatóbbá tehető. A fenti lekérdezéssel működés tekintetében megegyezik tehát az alábbi:
SELECT COUNT(*) FROM `diak`
Alapesetben a COUNT az értékek számát határozza meg. Van azonban lehetőségünk arra is, hogy csak az egyedi értékeket számoljuk meg – azaz megszámoljuk, hogy hány különböző értéket tartalmaz egy mező, például hogy hány különböző iskolából neveztek egy tanulmányi versenyre. Ez esetben a DISTINCT kulcsszót is használnunk kell, a COUNT összesítőfüggvényen belül:
SELECT COUNT(DISTINCT `iskola`) FROM `nevezo`