Výukový program pre agregačné funkcie MySQL: SUM, AVG, MAX, MIN, COUNT, DISTINCT

Anonim

Súhrnné funkcie sú tu

  • Vykonávanie výpočtov vo viacerých riadkoch
  • Z jedného stĺpca tabuľky
  • A vrátenie jednej hodnoty.

Norma ISO definuje päť (5) agregačných funkcií, konkrétne;

1) POČET

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

Prečo používať agregačné funkcie.

Z obchodného hľadiska majú rôzne úrovne organizácie odlišné informačné požiadavky. Vrcholoví manažéri majú zvyčajne záujem poznať celé čísla a nie sú potrebné jednotlivé podrobnosti.

> Funkcie agregácie nám umožňujú ľahko vytvárať súhrnné údaje z našej databázy.

Napríklad z našej databázy myflix môže správa vyžadovať nasledujúce správy

  • Najmenej požičané filmy.
  • Väčšina požičiavaných filmov.
  • Priemerný počet, ktorý je každý film vypožičaný za mesiac.

Vyššie uvedené správy ľahko vytvárame pomocou agregovaných funkcií.

Pozrime sa podrobne na agregačné funkcie.

Funkcia COUNT

Funkcia COUNT vráti celkový počet hodnôt v zadanom poli. Funguje na číselných aj nečíselných údajových typoch. Všetky agregované funkcie predvolene vylučujú hodnoty null pred prácou s údajmi.

COUNT (*) je špeciálna implementácia funkcie COUNT, ktorá vracia počet všetkých riadkov v zadanej tabuľke. COUNT (*) tiež berie do úvahy hodnoty Null a duplikáty.

Nasledujúca tabuľka zobrazuje údaje v tabuľke movierentals

referenčné číslo dátum transakcie dátum návratu členské číslo film_id film_ sa vrátil
11 20-06-2012 NULOVÝ 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 NULOVÝ 3 3 0

Predpokladajme, že chceme zistiť, koľkokrát bol film s id 2 vypožičaný

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

Vykonanie vyššie uvedeného dotazu v pracovnej ploche MySQL proti myflixdb nám dáva nasledujúce výsledky.

 
COUNT('movie_id')
3

DISTINCT kľúčové slovo

Kľúčové slovo DISTINCT, ktoré nám umožňuje vynechať duplikáty z našich výsledkov. To sa dosiahne zoskupením podobných hodnôt.

Na ocenenie konceptu Distinct umožňuje vykonať jednoduchý dotaz

SELECT `movie_id` FROM `movierentals`;
 
movie_id
1
2
2
2
3

Teraz vykonajme ten istý dopyt s odlišným kľúčovým slovom -

SELECT DISTINCT `movie_id` FROM `movierentals`;

Ako je uvedené nižšie, zreteľný vynechá duplicitné záznamy z výsledkov.

 
movie_id
1
2
3

Funkcia MIN

Funkcia MIN vráti najmenšiu hodnotu v zadanom poli tabuľky .

Ako príklad predpokladajme, že chceme poznať rok vydania najstaršieho filmu v našej knižnici. Na získanie požadovaných informácií môžeme použiť funkciu MIN MySQL.

Nasledujúci dotaz nám to pomáha dosiahnuť

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

Vykonanie vyššie uvedeného dotazu v pracovnej ploche MySQL proti myflixdb nám dáva nasledujúce výsledky.

 
MIN('year_released')
2005

Funkcia MAX

Ako už názov napovedá, funkcia MAX je opakom funkcie MIN. To vráti najväčšiu hodnotu zo zadaného poľa tabuľky .

Predpokladajme, že chceme získať rok vydania najnovšieho filmu v našej databáze. Aby sme to dosiahli, môžeme ľahko použiť funkciu MAX.

Nasledujúci príklad vracia posledný vydaný filmový rok.

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

Vykonanie vyššie uvedeného dotazu v pracovnom stole MySQL pomocou myflixdb nám dáva nasledujúce výsledky.

 
MAX('year_released')
2012

Funkcia SUM

Predpokladajme, že chceme prehľad, ktorý poskytuje celkovú sumu doteraz vykonaných platieb. Môžeme použiť funkciu MySQL SUM, ktorá vráti súčet všetkých hodnôt v uvedenom stĺpci . SUM funguje iba na číselných poliach . Z vráteného výsledku sú vylúčené nulové hodnoty.

Nasledujúca tabuľka zobrazuje údaje v tabuľke platieb-

Payment_ id členské číslo dátum platby popis Čiastka vyplatená external_ reference _number
1 1 23-07-2012 Platba za prenájom filmu 2 500 11
2 1 25-07-2012 Platba za prenájom filmu 2000 12
3 3 30-07-2012 Platba za prenájom filmu 6000 NULOVÝ

Dotaz zobrazený nižšie získa všetky uskutočnené platby a ich súčet vráti jeden výsledok.

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

Vykonanie vyššie uvedeného dotazu v pracovnom stole MySQL proti myflixdb poskytne nasledujúce výsledky.

 
SUM('amount_paid')
10500

Funkcia AVG

Funkcia MySQL AVG vráti priemer hodnôt v určenom stĺpci . Rovnako ako funkcia SUM funguje iba na číselných údajových typoch .

Predpokladajme, že chceme nájsť priemernú vyplatenú sumu. Môžeme použiť nasledujúci dotaz -

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

Vykonaním vyššie uvedeného dotazu v pracovnej ploche MySQL získate nasledujúce výsledky.

 
AVG('amount_paid')
3500

Zhrnutie

  • MySQL podporuje všetkých päť (5) štandardných agregačných funkcií ISO COUNT, SUM, AVG, MIN a MAX.
  • Funkcie SUM a AVG fungujú iba na číselných údajoch.
  • Ak chcete z výsledkov agregovanej funkcie vylúčiť duplicitné hodnoty, použite kľúčové slovo DISTINCT. Kľúčové slovo ALL obsahuje dokonca duplikáty. Ak nie je zadané nič, použije sa ako predvolené ALL.
  • Agregované funkcie je možné použiť v spojení s ďalšími klauzulami SQL, ako napríklad GROUP BY

Hlavolam

Súhrnné funkcie sú podľa vás ľahké. Skúste to!

Nasledujúci príklad zoskupuje členov podľa názvu, počíta celkový počet platieb, priemernú sumu platby a celkový súčet súm platieb.

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

Vykonanie vyššie uvedeného príkladu v pracovnej ploche MySQL nám dáva nasledujúce výsledky.