Apibendrintos funkcijos yra visos
- Skaičiavimų atlikimas keliose eilutėse
- Vieno lentelės stulpelio
- Ir grąžinti vieną vertę.
ISO standartas apibrėžia penkias (5) suvestines funkcijas, būtent;
1) SKAIČIAU
3) AVG
4) MIN
5) MAX
Kodėl verta naudoti suvestines funkcijas.
Žvelgiant iš verslo perspektyvos, skirtingiems organizacijos lygiams keliami skirtingi informacijos reikalavimai. Aukščiausių lygių vadovams paprastai rūpi žinoti visas figūras, o ne atskirų detalių.
> Apibendrintos funkcijos leidžia mums lengvai sukurti apibendrintus duomenis iš mūsų duomenų bazės.
Pavyzdžiui, iš „myflix“ duomenų bazės valdymui gali prireikti šių ataskaitų
- Mažiausiai nuomojami filmai.
- Dauguma nuomojamų filmų.
- Vidutinis kiekvieno filmo nuoma per mėnesį.
Mes lengvai rengiame aukščiau pateiktas ataskaitas naudodami kaupimo funkcijas.
Panagrinėkime išsamiai suvestines funkcijas.
COUNT funkcija
Funkcija COUNT pateikia bendrą reikšmių skaičių nurodytame lauke. Tai veikia tiek skaitinių, tiek neskaitinių duomenų tipams. Visos suvestinės funkcijos pagal numatytuosius nustatymus prieš pradėdami dirbti su duomenimis, neįtraukia nulinių verčių.
COUNT (*) yra specialus funkcijos COUNT įgyvendinimas, kuris grąžina visų nurodytos lentelės eilučių skaičių. „COUNT“ (*) taip pat atsižvelgia į „Nulls“ ir dublikatus.
Žemiau pateiktoje lentelėje pateikiami duomenys „Movierentals“ lentelėje
šaltinio numeris | Pervedimo data | grįžimo data | narystės skaičius | filmo ID | filmas_grįžo |
---|---|---|---|---|---|
11 | 2012-06-20 | NULL | 1 | 1 | 0 |
12 | 2012-06-22 | 2012-06-25 | 1 | 2 | 0 |
13 | 2012-06-22 | 2012-06-25 | 3 | 2 | 0 |
14 | 2012-06-21 | 2012-06-24 | 2 | 2 | 0 |
15 | 2012-06-23 | NULL | 3 | 3 | 0 |
Tarkime, kad norime sužinoti, kiek kartų filmas su ID 2 buvo išnuomotas
SELECT COUNT(`movie_id`) FROM `movierentals` WHERE `movie_id` = 2;
Vykdydami pirmiau pateiktą užklausą „MySQL“ darbastalyje prieš „myflixdb“, gausime šiuos rezultatus.
COUNT('movie_id') |
---|
3 |
DISTINCT raktinis žodis
Raktinis žodis DISTINCT, leidžiantis praleisti rezultatų dublikatus. Tai pasiekiama sugrupavus panašias vertes.
Norėdami įvertinti „Distinct“ sąvoką, galite atlikti paprastą užklausą
SELECT `movie_id` FROM `movierentals`;
movie_id |
---|
1 |
2 |
2 |
2 |
3 |
Dabar vykdykime tą pačią užklausą su atskiru raktiniu žodžiu -
SELECT DISTINCT `movie_id` FROM `movierentals`;
Kaip parodyta žemiau, „different“ rezultatuose nenurodomi dublikatai.
movie_id |
---|
1 |
2 |
3 |
MIN funkcija
MIN funkcija grąžina mažiausią reikšmę nurodytame lentelės lauke .
Tarkime, kad mes norime žinoti metus, kuriais buvo išleistas seniausias mūsų bibliotekos filmas, norimai informacijai gauti galime naudoti „MySQL“ MIN funkciją.
Ši užklausa padeda mums tai pasiekti
SELECT MIN(`year_released`) FROM `movies`;
Vykdydami pirmiau pateiktą užklausą „MySQL“ darbastalyje prieš „myflixdb“, gausime šiuos rezultatus.
MIN('year_released') |
---|
2005 |
MAX funkcija
Kaip rodo pavadinimas, MAX funkcija yra priešinga MIN funkcijai. Ji grąžina didžiausią vertę iš nurodyto lentelės lauko .
Tarkime, kad norime gauti metus, kai buvo išleistas naujausias filmas mūsų duomenų bazėje. Norėdami tai pasiekti, galime lengvai naudoti MAX funkciją.
Šis pavyzdys pateikia paskutinius išleistus filmo metus.
SELECT MAX(`year_released`) FROM `movies`;
Vykdydami pirmiau pateiktą užklausą „MySQL“ darbastalyje naudodami „myflixdb“, gauname šiuos rezultatus.
MAX('year_released') |
---|
2012 |
SUM funkcija
Tarkime, kad mes norime ataskaitos, kurioje būtų nurodyta visa iki šiol atliktų mokėjimų suma. Mes galime naudoti „MySQL SUM“ funkciją, kuri grąžina visų nurodyto stulpelio reikšmių sumą . SUM veikia tik skaitiniuose laukuose . Į grąžinamą rezultatą neįtraukiamos visos vertės.
Šioje lentelėje pateikiami duomenys mokėjimų lentelėje -
mokėjimo_ ID | narystės skaičius | mokėjimo diena | apibūdinimas | sumokėta suma | išorinis_ nuoroda _numeris |
---|---|---|---|---|---|
1 | 1 | 2012-07-23 | Filmo nuoma | 2500 | 11 |
2 | 1 | 2012-07-25 | Filmo nuoma | 2000 m | 12 |
3 | 3 | 2012-07-30 | Filmo nuoma | 6000 | NULL |
Žemiau pateikta užklausa gauna visus atliktus mokėjimus ir susumuoja juos, kad būtų pateiktas vienas rezultatas.
SELECT SUM(`amount_paid`) FROM `payments`;
Vykdant aukščiau pateiktą užklausą „MySQL“ darbastalyje prieš „myflixdb“, gaunami šie rezultatai.
SUM('amount_paid') |
---|
10500 |
AVG funkcija
„MySQL AVG“ funkcija pateikia nurodyto stulpelio reikšmių vidurkį . Kaip ir funkcija SUM, ji veikia tik skaitmeniniams duomenų tipams .
Tarkime, kad norime rasti vidutinę sumokėtą sumą. Mes galime naudoti šią užklausą -
SELECT AVG(`amount_paid`) FROM `payments`;
Vykdydami pirmiau pateiktą užklausą „MySQL“ darbastalyje, gausite šiuos rezultatus.
AVG('amount_paid') |
---|
3500 |
Santrauka
- „MySQL“ palaiko visas penkias (5) ISO standarto suvestines funkcijas: COUNT, SUM, AVG, MIN ir MAX.
- SUM ir AVG funkcijos veikia tik skaitinius duomenis.
- Jei norite išskirti pasikartojančias reikšmes iš suvestinės funkcijos rezultatų, naudokite raktinį žodį DISTINCT. VISAS raktinis žodis apima net dublikatus. Jei nieko nenurodyta, laikoma, kad ALL yra numatytasis.
- Suvestinės funkcijos gali būti naudojamos kartu su kitomis SQL nuostatomis, tokiomis kaip GROUP BY
Galvosūkis
Jūs manote, kad agregavimo funkcijos yra lengvos. Išbandyti šį!
Šis pavyzdys grupuoja narius pagal vardą, skaičiuoja bendrą mokėjimų skaičių, vidutinę mokėjimo sumą ir bendrą mokėjimo sumų sumą.
SELECT m.`full_names`,COUNT(p.`payment_id`) AS `paymentscount`,AVG(p.`amount_paid`) AS `averagepaymentamount`,SUM(p.`amount_paid`) AS `totalpayments` FROM members m, payments p WHERE m.`membership_number` = p.`membership_number` GROUP BY m.`full_names`;
Vykdydami pirmiau pateiktą pavyzdį „MySQL“ darbastalyje, gausime šiuos rezultatus.