Funcții agregate în MySQL

Funcțiile agregate sunt totul despre

  • Efectuarea calculelor pe mai multe rânduri
  • Dintr-o singură coloană a unui tabel
  • Și returnând o singură valoare.

Standardul ISO definește cinci (5) funcții agregate și anume;

1) COUNT
2) SUMA
3) AVG
4) MIN
5) MAX

De ce să folosiți funcții agregate

Din perspectiva afacerii, diferitele niveluri de organizare au cerințe diferite de informații. Managerii de nivel superior sunt de obicei interesați să cunoască cifre întregi și nu este necesar detaliile individuale.

Funcțiile agregate ne permit să producem cu ușurință date rezumate din baza noastră de date.

De exemplu, din baza noastră de date myflix, managementul poate necesita următoarele rapoarte

  • Filmele cel mai puțin închiriate.
  • Cele mai multe filme închiriate.
  • Numărul mediu pe care fiecare film este închiriat într-o lună.

Producem cu ușurință rapoartele de mai sus folosind funcții agregate.

Să analizăm în detaliu funcțiile agregate.

Funcția COUNT

Funcția COUNT returnează numărul total de valori din câmpul specificat. Funcționează atât pe tipuri de date numerice, cât și pe cele nenumerice. Toate funcțiile agregate exclud în mod implicit valorile nule înainte de a lucra asupra datelor.

COUNT (*) este o implementare specială a funcției COUNT care returnează numărul tuturor rândurilor dintr-un tabel specificat. COUNT (*) ia în considerare și nuluri și duplicate.

Tabelul de mai jos arată datele din tabelul de închiriere de filme

numar de referinta Data tranzacției data_return numar de membru movie_id film_ a revenit
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

Să presupunem că vrem să obținem de câte ori filmul cu id 2 a fost închiriat

SELECT COUNT(`movie_id`)  FROM `movierentals` WHERE `movie_id` = 2;

Executarea interogării de mai sus în MySQL banc de lucru împotriva myflixdb ne oferă următoarele rezultate.

COUNT('movie_id')
3

Cuvânt cheie DISTINCT

Cuvânt cheie DISTINCT

Cuvântul cheie DISTINCT care ne permite să omitem duplicatele din rezultatele noastre. Acest lucru se realizează prin gruparea valorilor similare împreună.

Pentru a aprecia conceptul de Distinct, să executăm o interogare simplă

SELECT `movie_id` FROM `movierentals`;

movie_id
1
2
2
2
3

Acum să executăm aceeași interogare cu cuvântul cheie distinct -

SELECT DISTINCT `movie_id` FROM `movierentals`;

După cum se arată mai jos, distinct omite înregistrările duplicate din rezultate.

movie_id
1
2
3

Funcția MIN

Funcția MIN returnează cea mai mică valoare din câmpul tabel specificat.

De exemplu, să presupunem că vrem să știm anul în care a fost lansat cel mai vechi film din biblioteca noastră, putem folosi MySQLfuncția MIN pentru a obține informațiile dorite.

Următoarea interogare ne ajută să realizăm acest lucru

SELECT MIN(`year_released`) FROM `movies`;

Executarea interogării de mai sus în MySQL Workbench împotriva myflixdb ne oferă următoarele rezultate.

MIN('year_released')
2005

MAX

Așa cum sugerează și numele, funcția MAX este opusul funcției MIN. Aceasta returnează cea mai mare valoare din câmpul de tabel specificat.

Să presupunem că vrem să obținem anul în care a fost lansat cel mai recent film din baza noastră de date. Putem folosi cu ușurință funcția MAX pentru a realiza asta.

Următorul exemplu returnează ultimul an de film lansat.

SELECT MAX(`year_released`)  FROM `movies`;

Executarea interogării de mai sus în MySQL Workbench folosind myflixdb ne oferă următoarele rezultate.

MAX('year_released')
2012

Funcția SUM

Să presupunem că vrem un raport care să ofere suma totală a plăților efectuate până acum. Putem folosi MySQL USM funcţie care returnează suma tuturor valorilor din coloana specificată. SUM funcționează numai pe câmpuri numerice. Valorile nule sunt excluse din rezultatul returnat.

Următorul tabel prezintă datele din tabelul de plăți-

plata_ id numar de membru Data de plată descriere Suma plătită număr_de_referință_extern
1 1 23-07-2012 Plată închiriere film 2500 11
2 1 25-07-2012 Plată închiriere film 2000 12
3 3 30-07-2012 Plată închiriere film 6000 NULL

Interogarea prezentată mai jos primește toate plățile efectuate și le însumează pentru a returna un singur rezultat.

SELECT SUM(`amount_paid`) FROM `payments`;

Executarea interogării de mai sus în MySQL Workbench împotriva myflixdb oferă următoarele rezultate.

SUM('amount_paid')
10500

AVG funcţie

MySQL AVG funcţie returnează media valorilor dintr-o coloană specificată. La fel ca și funcția SUM, aceasta funcționează numai pe tipuri de date numerice.

Să presupunem că vrem să aflăm suma medie plătită. Putem folosi următoarea interogare -

SELECT AVG(`amount_paid`)  FROM `payments`;

Executarea interogării de mai sus în MySQL workbench, ne oferă următoarele rezultate.

AVG('amount_paid')
3500

Joc de inteligență

Crezi că funcțiile agregate sunt ușoare. Incearca asta!

Următorul exemplu grupează membrii după nume, numără numărul total de plăți, suma medie a plății și totalul general al sumelor plăților.

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`;

Executarea exemplului de mai sus în MySQL bancul de lucru ne oferă următoarele rezultate.

AVG funcţie

Rezumat

  • MySQL acceptă toate cele cinci (5) funcții agregate standard ISO COUNT, SUM, AVG, MIN și MAX.
  • SUMA și AVG funcțiile funcționează numai pe date numerice.
  • Dacă doriți să excludeți valorile duplicate din rezultatele funcției agregate, utilizați cuvântul cheie DISTINCT. Cuvântul cheie ALL include chiar și duplicatele. Dacă nu este specificat nimic, ALL este considerat implicit.
  • Funcțiile agregate pot fi utilizate împreună cu alte clauze SQL, cum ar fi A SE GRUPA CU