Koondfunktsioonid on kõik
- Mitmel real arvutuste tegemine
- Ühest tabeli veerust
- Ja tagastades ühe väärtuse.
ISO standard määratleb viis (5) koondfunktsiooni, nimelt;
1) COUNT
3) AVG
4) MIN
5) MAX
Miks kasutada koondfunktsioone.
Äri seisukohalt on erinevatel organisatsioonitasanditel erinevad infonõuded. Tipptasemel juhid on tavaliselt huvitatud tervikute arvude tundmisest ja mitte üksikute detailide vajalikkusest.
> Koondfunktsioonid võimaldavad meil andmebaasist hõlpsasti kokkuvõtlikke andmeid toota.
Näiteks võib haldamine meie myflixi andmebaasist nõuda järgmisi aruandeid
- Vähim renditud filmid.
- Enamik renditud filme.
- Keskmine arv, kui palju iga kuu filme välja renditakse.
Koostame koondfunktsioonide abil ülaltoodud aruandeid.
Uurime üksikasjalikult koondfunktsioone.
Funktsioon COUNT
Funktsioon COUNT tagastab määratud välja väärtuste koguarvu. See töötab nii arvuliste kui ka mittearvuliste andmetüüpide puhul. Kõik agregaatfunktsioonid välistavad enne andmete töötlemist vaikeväärtused.
COUNT (*) on funktsiooni COUNT spetsiaalne rakendus, mis tagastab määratud tabeli kõigi ridade arvu. COUNT (*) arvestab ka Nullsi ja duplikaate.
Allolevas tabelis on esitatud andmed tabelis Movierentals
viitenumber | tehingu kuupäev | tagastamise kuupäev | liikmenumber | movie_id | film_ tagastati |
---|---|---|---|---|---|
11 | 20.06.2012 | NULL | 1 | 1 | 0 |
12 | 22.06.2012 | 25.06.2012 | 1 | 2 | 0 |
13 | 22.06.2012 | 25.06.2012 | 3 | 2 | 0 |
14 | 21.06.2012 | 24.06.2012 | 2 | 2 | 0 |
15 | 23.06.2012 | NULL | 3 | 3 | 0 |
Oletame, et tahame saada mitu korda filmi, mille ID on 2, välja renditud
SELECT COUNT(`movie_id`) FROM `movierentals` WHERE `movie_id` = 2;
Ülaltoodud päringu täitmine MySQL-i töölaual myflixdb vastu annab meile järgmised tulemused.
COUNT('movie_id') |
---|
3 |
DISTINCT märksõna
Märksõna DISTINCT, mis võimaldab meil duplikaadid oma tulemustest välja jätta. See saavutatakse sarnaste väärtuste rühmitamise teel.
Et mõista mõistet Distinct, laseb täita lihtsa päringu
SELECT `movie_id` FROM `movierentals`;
movie_id |
---|
1 |
2 |
2 |
2 |
3 |
Nüüd täidame sama päringu eraldi märksõnaga -
SELECT DISTINCT `movie_id` FROM `movierentals`;
Nagu allpool näidatud, jätab erill duplikaatide kirjed tulemustest välja.
movie_id |
---|
1 |
2 |
3 |
MIN funktsioon
Funktsioon MIN tagastab määratud tabeli välja väikseima väärtuse .
Oletame näiteks, et tahame teada aastat, mil meie raamatukogu vanim film ilmus, saame soovitud teabe saamiseks kasutada MySQL-i MIN-i funktsiooni.
Järgmine päring aitab meil seda saavutada
SELECT MIN(`year_released`) FROM `movies`;
Ülaltoodud päringu täitmine MySQL-i töölaual myflixdb vastu annab meile järgmised tulemused.
MIN('year_released') |
---|
2005 |
MAX funktsioon
Nii nagu nimigi ütleb, on MAX funktsioon vastupidine MIN funktsioonile. See tagastab määratud tabeli välja suurima väärtuse .
Oletame, et tahame saada aasta, mil meie andmebaasis ilmus uusim film. Selle saavutamiseks saame funktsiooni MAX hõlpsasti kasutada.
Järgmine näide tagastab viimase välja antud filmiaasta.
SELECT MAX(`year_released`) FROM `movies`;
Ülaltoodud päringu täitmine MySQL-i töölaual myflixdb abil annab meile järgmised tulemused.
MAX('year_released') |
---|
2012 |
Funktsioon SUM
Oletame, et soovime aruannet, mis sisaldab seni tehtud maksete kogusummat. Saame kasutada funktsiooni MySQL SUM, mis tagastab kõigi määratud veeru kõigi väärtuste summa . SUM töötab ainult numbriväljadel . Nullväärtused jäetakse tagastatud tulemusest välja.
Järgmine tabel näitab maksete tabeli andmeid
makse_ ID | liikmenumber | makse_kuupäev | kirjeldus | makstud summa | väline_viide _number |
---|---|---|---|---|---|
1 | 1 | 23.07.2012 | Filmirendi makse | 2500 | 11 |
2 | 1 | 25-07-2012 | Filmirendi makse | 2000 | 12 |
3 | 3 | 30-07-2012 | Filmirendi makse | 6000 | NULL |
Allpool kuvatud päring saab kõik tehtud maksed ja summeerib need ühe tulemuse tagastamiseks.
SELECT SUM(`amount_paid`) FROM `payments`;
Ülaltoodud päringu täitmine MySQL-i töölaual myflixdb-ga annab järgmised tulemused.
SUM('amount_paid') |
---|
10500 |
AVG funktsioon
Funktsioon MySQL AVG tagastab määratud veeru väärtuste keskmise . Täpselt nagu funktsioon SUM, töötab see ka ainult arvandmetüüpidel .
Oletame, et tahame leida keskmise makstud summa. Saame kasutada järgmist päringut -
SELECT AVG(`amount_paid`) FROM `payments`;
Ülaltoodud päringu täitmine MySQL-i töölaual annab meile järgmised tulemused.
AVG('amount_paid') |
---|
3500 |
Kokkuvõte
- MySQL toetab kõiki viit (5) ISO-standardi koondfunktsiooni COUNT, SUM, AVG, MIN ja MAX.
- Funktsioonid SUM ja AVG töötavad ainult arvandmetel.
- Kui soovite koondfunktsioonide tulemustest duplikaatväärtused välja jätta, kasutage märksõna DISTINCT. KÕIK märksõna sisaldab isegi duplikaate. Kui midagi pole täpsustatud, eeldatakse, et vaikevalik on ALL.
- Agregaatfunktsioone saab kasutada koos teiste SQL-klauslitega, näiteks GROUP BY
Aju teaser
Teie arvates on liitfunktsioonid lihtsad. Proovi seda!
Järgmine näide rühmitab liikmed nime järgi, loendab maksete koguarvu, keskmise maksesumma ja maksesummade üldsumma.
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`;
Ülaltoodud näite täitmine MySQL-i töölaual annab meile järgmised tulemused.