Výukový program pro agregační funkce MySQL: SUM, AVG, MAX, MIN, COUNT, DISTINCT

Anonim

Agregační funkce jsou o

  • Provádění výpočtů na více řádcích
  • Jediného sloupce tabulky
  • A vrácení jediné hodnoty.

Norma ISO definuje pět (5) agregačních funkcí, jmenovitě;

1) POČET

2) SOUČET
3) AVG
4) MIN
5) MAX

Proč používat agregační funkce.

Z obchodního hlediska mají různé úrovně organizace odlišné požadavky na informace. Manažeři na nejvyšších úrovních se obvykle zajímají o to, aby věděli celé postavy, a není nutné jednotlivé podrobnosti.

> Agregační funkce nám umožňují snadno vytvářet souhrnná data z naší databáze.

Například z naší databáze myflix může správa vyžadovat následující zprávy

  • Nejméně pronajaté filmy.
  • Většina vypůjčených filmů.
  • Průměrný počet, za který se každý film pronajímá za měsíc.

Nad sestavami snadno vytváříme agregační funkce.

Podívejme se na agregační funkce podrobně.

Funkce COUNT

Funkce COUNT vrací celkový počet hodnot v zadaném poli. Funguje na numerických i nečíselných datových typech. Všechny agregované funkce ve výchozím nastavení vylučují před zpracováním dat hodnoty null.

COUNT (*) je speciální implementace funkce COUNT, která vrací počet všech řádků v zadané tabulce. COUNT (*) zohledňuje také hodnoty Null a duplikáty.

Níže uvedená tabulka zobrazuje data v tabulce movierentals

referenční číslo Datum transakce datum návratu členské číslo film_id film_ se vrátil
11 20-06-2012 NULA 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 NULA 3 3 0

Předpokládejme, že chceme zjistit, kolikrát byl film s ID 2 pronajat

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

Provedení výše uvedeného dotazu v pracovní ploše MySQL proti myflixdb nám dává následující výsledky.

 
COUNT('movie_id')
3

DISTINCT Klíčové slovo

Klíčové slovo DISTINCT, které nám umožňuje vynechat duplikáty z našich výsledků. Toho je dosaženo seskupením podobných hodnot dohromady.

Abychom ocenili koncept Distinct, umožníme provést jednoduchý dotaz

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

Nyní provedeme stejný dotaz s odlišným klíčovým slovem -

SELECT DISTINCT `movie_id` FROM `movierentals`;

Jak je uvedeno níže, odlišný vynechá duplicitní záznamy z výsledků.

 
movie_id
1
2
3

Funkce MIN

Funkce MIN vrací nejmenší hodnotu v zadaném poli tabulky .

Jako příklad předpokládejme, že chceme znát rok, ve kterém byl vydán nejstarší film v naší knihovně. K získání požadovaných informací můžeme použít funkci MIN MySQL.

Následující dotaz nám to pomůže dosáhnout

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

Provedení výše uvedeného dotazu v pracovní ploše MySQL proti myflixdb nám dává následující výsledky.

 
MIN('year_released')
2005

Funkce MAX

Jak název napovídá, funkce MAX je opakem funkce MIN. To vrátí největší hodnotu ze zadaného pole tabulky .

Předpokládejme, že chceme získat rok, kdy byl vydán nejnovější film v naší databázi. K tomu můžeme snadno použít funkci MAX.

Následující příklad vrací nejnovější rok vydání filmu.

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

Provedení výše uvedeného dotazu na pracovní ploše MySQL pomocí myflixdb nám dává následující výsledky.

 
MAX('year_released')
2012

Funkce SUM

Předpokládejme, že chceme přehled, který udává celkovou částku dosud provedených plateb. Můžeme použít funkci MySQL SUM, která vrací součet všech hodnot ve specifikovaném sloupci . SUM funguje pouze na číselných polích . Z vráceného výsledku jsou vyloučeny nulové hodnoty.

V následující tabulce jsou uvedena data v tabulce plateb -

ID platby členské číslo datum splatnosti popis Částka vyplacená externí_ reference _číslo
1 1 23-07-2012 Platba za pronájem filmu 2500 11
2 1 25-07-2012 Platba za pronájem filmu 2000 12
3 3 30-07-2012 Platba za pronájem filmu 6000 NULA

Dotaz zobrazený níže získá všechny provedené platby a sečte je, aby vrátil jediný výsledek.

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

Provedení výše uvedeného dotazu v pracovní ploše MySQL proti myflixdb poskytuje následující výsledky.

 
SUM('amount_paid')
10500

Funkce AVG

Funkce MySQL AVG vrací průměr hodnot v zadaném sloupci . Stejně jako funkce SUM funguje pouze na číselné datové typy .

Předpokládejme, že chceme najít průměrnou zaplacenou částku. Můžeme použít následující dotaz -

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

Provedení výše uvedeného dotazu v pracovní ploše MySQL nám poskytne následující výsledky.

 
AVG('amount_paid')
3500

souhrn

  • MySQL podporuje všech pět (5) standardních agregačních funkcí ISO COUNT, SUM, AVG, MIN a MAX.
  • Funkce SUM a AVG fungují pouze na číselných datech.
  • Pokud chcete z výsledků agregační funkce vyloučit duplicitní hodnoty, použijte klíčové slovo DISTINCT. Klíčové slovo ALL zahrnuje i duplikáty. Pokud není zadáno nic, považuje se za výchozí ALL.
  • Agregační funkce lze použít ve spojení s dalšími klauzulemi SQL, jako je GROUP BY

Hlavolam

Myslíte si, že agregační funkce jsou snadné. Zkuste to!

Následující příklad seskupuje členy podle názvu, počítá celkový počet plateb, průměrnou částku platby a celkový součet částek plateb.

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

Provedení výše uvedeného příkladu v pracovní ploše MySQL nám dává následující výsledky.