Vodič za agregirane funkcije MySQL: ZBIR, AVG, MAKS, MIN, BROJ, DISTINKT

Anonim

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

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