Vse sestavljene funkcije so
- Izvajanje izračunov v več vrsticah
- Enega stolpca tabele
- In vrnitev ene same vrednosti.
Standard ISO opredeljuje pet (5) skupnih funkcij in sicer;
1) ŠTEVILO
3) AVG
4) MIN
5) MAX
Zakaj uporabljati agregatne funkcije.
S poslovnega vidika imajo različne ravni organizacije različne zahteve po informacijah. Vodje najvišjih ravni običajno zanimajo celotne številke in niso potrebne posamezne podrobnosti.
> Združene funkcije nam omogočajo enostavno izdelavo strnjenih podatkov iz naše baze podatkov.
Na primer, iz naše baze podatkov myflix lahko upravljanje zahteva naslednja poročila
- Najmanj najeti filmi.
- Večina izposojenih filmov.
- Povprečno število oddanih filmov v enem mesecu.
Zgornja poročila zlahka izdelamo z uporabo združenih funkcij.
Podrobneje poglejmo agregatne funkcije.
Funkcija COUNT
Funkcija COUNT vrne skupno število vrednosti v podanem polju. Deluje tako na številskih kot na numeričnih vrstah podatkov. Vse sestavljene funkcije privzeto pred delom na podatkih izključijo ničelne vrednosti.
COUNT (*) je posebna izvedba funkcije COUNT, ki vrne štetje vseh vrstic v določeni tabeli. COUNT (*) upošteva tudi nule in dvojnike.
Spodnja tabela prikazuje podatke v tabeli filmskih filmov
referenčna številka | datum transakcije | return_date | številka_članstva | movie_id | film_ se je vrnil |
---|---|---|---|---|---|
11. | 20. 6. 2012 | NIČ | 1. | 1. | 0 |
12. | 22. 6. 2012 | 25. 6. 2012 | 1. | 2. | 0 |
13. | 22. 6. 2012 | 25. 6. 2012 | 3. | 2. | 0 |
14. | 21. 6. 2012 | 24. 6. 2012 | 2. | 2. | 0 |
15. | 23. 6. 2012 | NIČ | 3. | 3. | 0 |
Recimo, da želimo ugotoviti, kolikokrat je bil film z id 2 izposojen
SELECT COUNT(`movie_id`) FROM `movierentals` WHERE `movie_id` = 2;
Izvedba zgornje poizvedbe v delovnem okolju MySQL proti myflixdb nam da naslednje rezultate.
COUNT('movie_id') |
---|
3 |
DISTINCT Ključna beseda
Ključna beseda DISTINCT, ki nam omogoča, da izpustimo dvojnike rezultatov. To dosežemo z združevanjem podobnih vrednosti.
Če želimo ceniti koncept Distinct, omogočimo preprosto poizvedbo
SELECT `movie_id` FROM `movierentals`;
movie_id |
---|
1 |
2 |
2 |
2 |
3 |
Zdaj pa izvedimo isto poizvedbo z ločeno ključno besedo -
SELECT DISTINCT `movie_id` FROM `movierentals`;
Kot je prikazano spodaj, ločeni izpusti podvojene zapise iz rezultatov.
movie_id |
---|
1 |
2 |
3 |
MIN funkcija
Funkcija MIN vrne najmanjšo vrednost v podanem polju tabele .
Denimo, da želimo vedeti, v katerem letu je bil najstarejši film v naši knjižnici izdan, lahko uporabimo funkcijo MIN MySQL, da dobimo želene informacije.
Naslednja poizvedba nam pomaga doseči to
SELECT MIN(`year_released`) FROM `movies`;
Izvedba zgornje poizvedbe v delovnem okolju MySQL proti myflixdb nam da naslednje rezultate.
MIN('year_released') |
---|
2005 |
MAX funkcija
Kot že ime pove, je funkcija MAX nasprotna funkciji MIN. To vrne največjo vrednost iz določene tabele področju .
Predpostavimo, da želimo dobiti leto, ko je izšel najnovejši film iz naše baze podatkov. To lahko enostavno uporabimo s funkcijo MAX.
Naslednji primer prikazuje zadnje izdano filmsko leto.
SELECT MAX(`year_released`) FROM `movies`;
Izvedba zgornje poizvedbe v delovnem okolju MySQL z uporabo myflixdb nam da naslednje rezultate.
MAX('year_released') |
---|
2012 |
Funkcija SUM
Recimo, da želimo poročilo, ki vsebuje skupni znesek do zdaj opravljenih plačil. Uporabimo lahko funkcijo MySQL SUM, ki vrne vsoto vseh vrednosti v določenem stolpcu . SUM deluje samo na številskih poljih . Ničelne vrednosti so izključene iz vrnjenega rezultata.
Naslednja tabela prikazuje podatke v tabeli plačil-
id_plačila | številka_članstva | dan plačila | opis | plačani znesek | zunanja_ referenca _številka |
---|---|---|---|---|---|
1. | 1. | 23. 7. 2012 | Plačilo izposoje filmov | 2500 | 11. |
2. | 1. | 25. 7. 2012 | Plačilo izposoje filmov | 2000 | 12. |
3. | 3. | 30. 7. 2012 | Plačilo izposoje filmov | 6000 | NIČ |
Spodnja poizvedba prikaže vsa opravljena plačila in jih sešteje, da se vrne en rezultat.
SELECT SUM(`amount_paid`) FROM `payments`;
Izvedba zgornje poizvedbe v delovnem okolju MySQL proti myflixdb daje naslednje rezultate.
SUM('amount_paid') |
---|
10500 |
Funkcija AVG
Funkcija MySQL AVG vrne povprečje vrednosti v določenem stolpcu . Tako kot funkcija SUM deluje tudi na numeričnih tipih podatkov .
Recimo, da želimo najti povprečni plačani znesek. Uporabimo lahko naslednjo poizvedbo -
SELECT AVG(`amount_paid`) FROM `payments`;
Če izvedemo zgornjo poizvedbo v delovnem okolju MySQL, dobimo naslednje rezultate.
AVG('amount_paid') |
---|
3500 |
Povzetek
- MySQL podpira vseh pet (5) standardnih skupnih funkcij ISO: COUNT, SUM, AVG, MIN in MAX.
- Funkciji SUM in AVG delujeta le s številskimi podatki.
- Če želite iz skupnih rezultatov funkcije izključiti podvojene vrednosti, uporabite ključno besedo DISTINCT. Ključna beseda ALL vključuje celo dvojnike. Če ni določeno nič, se za privzeto domneva VSE.
- Združene funkcije se lahko uporabljajo skupaj z drugimi stavki SQL, kot je GROUP BY
Uganka
Mislite, da so sestavljene funkcije enostavne. Poskusite to!
Naslednji primer združuje člane po imenih, šteje skupno število plačil, povprečni znesek plačila in skupni znesek plačil.
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`;
Z izvajanjem zgornjega primera v delovnem okolju MySQL dobimo naslednje rezultate.