„MySQL“ suvestinių funkcijų mokymo programa: SUM, AVG, MAX, MIN, COUNT, DISTINCT

Anonim

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

2) SUMA
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.