Značajke zbirnih funkcija su sve
- Izvođenje izračuna na više redaka
- Jednog stupca tablice
- I vraćanje jedne vrijednosti.
ISO standard definira pet (5) skupnih funkcija, naime;
1) COUNT
3) PROSJEK
4) MIN
5) MAX
Zašto koristiti agregatne funkcije.
Iz poslovne perspektive, različite razine organizacije imaju različite zahtjeve za informacijama. Rukovoditelje najviše razine obično zanima cjelokupne brojke, a nisu im potrebni pojedinačni detalji.
> Skupne funkcije omogućuju nam da lako proizvedemo sažete podatke iz naše baze podataka.
Na primjer, iz naše baze podataka myflix, upravljanje može zahtijevati sljedeća izvješća
- Najmanje unajmljeni filmovi.
- Većina iznajmljenih filmova.
- Prosječan broj koji se svaki film iznajmljuje u mjesec dana.
Gore izrađena izvješća lako izrađujemo pomoću skupnih funkcija.
Pogledajmo pojedinosti agregatnih funkcija.
BROJ Funkcija
Funkcija COUNT vraća ukupan broj vrijednosti u navedenom polju. Radi na numeričkim i ne-numeričkim vrstama podataka. Sve skupne funkcije prema zadanim postavkama isključuju null vrijednosti prije rada na podacima.
COUNT (*) je posebna implementacija funkcije COUNT koja vraća broj svih redaka u navedenoj tablici. COUNT (*) također uzima u obzir nule i duplikate.
Tablica prikazana u nastavku prikazuje podatke u tablici filmskih filmova
referentni_broj | Datum transakcije | Datum povratka | članski broj | film_id | film_ vratio se |
---|---|---|---|---|---|
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 |
Pretpostavimo da želimo saznati koliko je puta film s id 2 iznajmljen
SELECT COUNT(`movie_id`) FROM `movierentals` WHERE `movie_id` = 2;
Izvršenje gornjeg upita u MySQL radnom stolu protiv myflixdb daje nam sljedeće rezultate.
COUNT('movie_id') |
---|
3 |
RAZLIKUJTE ključnu riječ
Ključna riječ DISTINCT koja nam omogućuje izostavljanje duplikata iz rezultata. To se postiže grupiranjem sličnih vrijednosti.
Da bismo uvažili koncept Distinct, dopuštamo izvršavanje jednostavnog upita
SELECT `movie_id` FROM `movierentals`;
movie_id |
---|
1 |
2 |
2 |
2 |
3 |
Izvršimo sada isti upit s različitom ključnom riječi -
SELECT DISTINCT `movie_id` FROM `movierentals`;
Kao što je prikazano u nastavku, iz rezultata se izostavljaju duplicirani zapisi.
movie_id |
---|
1 |
2 |
3 |
MIN funkcija
Funkcija MIN vraća najmanju vrijednost u navedenom polju tablice .
Kao primjer, pretpostavimo da želimo znati godinu u kojoj je objavljen najstariji film u našoj knjižnici, možemo koristiti MySQL-ovu funkciju MIN da bismo dobili željene informacije.
Sljedeći upit pomaže nam da to postignemo
SELECT MIN(`year_released`) FROM `movies`;
Izvršenje gornjeg upita u MySQL radnom stolu protiv myflixdb daje nam sljedeće rezultate.
MIN('year_released') |
---|
2005 |
MAX funkcija
Baš kao što i samo ime govori, funkcija MAX je suprotna funkciji MIN. To vraća najveća vrijednost iz određenog stola polju .
Pretpostavimo da želimo dobiti godinu kada je objavljen najnoviji film u našoj bazi podataka. To možemo lako koristiti MAX funkcijom.
Sljedeći primjer vraća posljednju objavljenu filmsku godinu.
SELECT MAX(`year_released`) FROM `movies`;
Izvršenje gornjeg upita u MySQL radnom stolu pomoću myflixdb daje nam sljedeće rezultate.
MAX('year_released') |
---|
2012 |
SUM funkcija
Pretpostavimo da želimo izvješće koje daje ukupan iznos do sada izvršenih plaćanja. Možemo koristiti MySQL SUM funkciju koja vraća zbroj svih vrijednosti u navedenom stupcu . SUM radi samo na numeričkim poljima . Nulove vrijednosti izuzete su iz vraćenog rezultata.
Sljedeća tablica prikazuje podatke u tablici plaćanja-
id_plaćanja | članski broj | Datum plačanja | opis | uplaćeni iznos | vanjska_ referenca _broj |
---|---|---|---|---|---|
1 | 1 | 23.07.2012 | Plaćanje najma filma | 2500 | 11 |
2 | 1 | 25-07-2012 | Plaćanje najma filma | 2000 | 12 |
3 | 3 | 30-07-2012 | Plaćanje najma filma | 6000 | NULL |
Upit prikazan u nastavku dobiva sve izvršene uplate i zbraja ih da bi se dobio jedan rezultat.
SELECT SUM(`amount_paid`) FROM `payments`;
Izvršenje gornjeg upita u MySQL radnom stolu protiv myflixdb daje sljedeće rezultate.
SUM('amount_paid') |
---|
10500 |
AVG funkcija
MySQL AVG funkcija vraća prosjek vrijednosti u navedenom stupcu . Baš kao i funkcija SUM, ona radi samo na numeričkim vrstama podataka .
Pretpostavimo da želimo pronaći prosječni plaćeni iznos. Možemo upotrijebiti sljedeći upit -
SELECT AVG(`amount_paid`) FROM `payments`;
Izvršenje gornjeg upita u MySQL radnom stolu daje nam sljedeće rezultate.
AVG('amount_paid') |
---|
3500 |
Sažetak
- MySQL podržava svih pet (5) ISO standardnih agregatnih funkcija COUNT, SUM, AVG, MIN i MAX.
- SUM i AVG funkcije rade samo na numeričkim podacima.
- Ako želite izuzeti dvostruke vrijednosti iz rezultata objedinjene funkcije, upotrijebite ključnu riječ DISTINCT. Ključna riječ ALL uključuje čak i duplikate. Ako ništa nije navedeno, SVE se pretpostavlja kao zadani.
- Skupne funkcije mogu se koristiti zajedno s drugim SQL klauzulama kao što je GROUP BY
Mozgalica
Mislite da su skupne funkcije jednostavne. Pokušaj ovo!
Sljedeći primjer grupira članove po imenima, broji ukupan broj uplata, prosječni iznos uplate i ukupni iznos iznosa uplata.
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`;
Izvršenje gornjeg primjera u MySQL workbenchu daje nam sljedeće rezultate.