MySQL Aggregate Funtions Tutorial: SUM, AVG, MAX, MIN, COUNT, DISTINCT

Anonim

Aggregerade funktioner handlar om

  • Utföra beräkningar på flera rader
  • Av en enda kolumn i en tabell
  • Och returnerar ett enda värde.

ISO-standarden definierar fem (5) aggregerade funktioner, nämligen;

1) RÄKNING

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

Varför använda aggregerade funktioner.

Ur ett affärsperspektiv har olika organisationsnivåer olika informationskrav. Toppnivåchefer är vanligtvis intresserade av att känna till heltal och inte nödvändiga de enskilda detaljerna.

> Aggregerade funktioner gör att vi enkelt kan producera sammanfattade data från vår databas.

Till exempel från vår myflix-databas kan ledningen kräva följande rapporter

  • Minst hyrda filmer.
  • Mest hyrda filmer.
  • Genomsnittligt antal som varje film hyrs ut på en månad.

Vi producerar enkelt ovanstående rapporter med aggregerade funktioner.

Låt oss titta på aggregerade funktioner i detalj.

COUNT- funktion

COUNT-funktionen returnerar det totala antalet värden i det angivna fältet. Det fungerar på både numeriska och icke-numeriska datatyper. Alla aggregerade funktioner exkluderar som standard nullvärden innan du arbetar med data.

COUNT (*) är en speciell implementering av COUNT-funktionen som returnerar antalet rader i en angiven tabell. COUNT (*) tar också hänsyn till nollar och dubbletter.

Tabellen nedan visar data i filmtabellen

referensnummer Transaktions Datum Återlämningsdatum medlemsnummer movie_id film_ återvände
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

Låt oss anta att vi vill få det antal gånger som filmen med id 2 har hyrts ut

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

Att utföra ovanstående fråga i MySQL-arbetsbänken mot myflixdb ger oss följande resultat.

 
COUNT('movie_id')
3

DISTINCT Nyckelord

Sökordet DISTINCT som låter oss utelämna dubbletter från våra resultat. Detta uppnås genom att gruppera liknande värden.

För att uppskatta begreppet Distinct kan vi utföra en enkel fråga

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

Låt oss nu utföra samma fråga med det distinkta nyckelordet -

SELECT DISTINCT `movie_id` FROM `movierentals`;

Som visas nedan utelämnar distinkta dubbletter från resultaten.

 
movie_id
1
2
3

MIN- funktion

Funktionen MIN returnerar det minsta värdet i det angivna tabellfältet .

Låt oss som ett exempel anta att vi vill veta året då den äldsta filmen i vårt bibliotek släpptes, vi kan använda MySQLs MIN-funktion för att få önskad information.

Följande fråga hjälper oss att uppnå det

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

Att utföra ovanstående fråga i MySQL-arbetsbänken mot myflixdb ger oss följande resultat.

 
MIN('year_released')
2005

MAX-funktion

Precis som namnet antyder är MAX-funktionen motsatsen till MIN-funktionen. Det returnerar det största värdet från det angivna tabellfältet .

Låt oss anta att vi vill få det år då den senaste filmen i vår databas släpptes. Vi kan enkelt använda MAX-funktionen för att uppnå det.

Följande exempel returnerar det senaste filmåret som släpptes.

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

Att utföra ovanstående fråga i MySQL-arbetsbänk med myflixdb ger oss följande resultat.

 
MAX('year_released')
2012

SUM- funktion

Antag att vi vill ha en rapport som ger det totala beloppet som gjorts hittills. Vi kan använda funktionen MySQL SUM som returnerar summan av alla värden i den angivna kolumnen . SUM fungerar endast på numeriska fält . Nollvärden exkluderas från det returnerade resultatet.

Följande tabell visar uppgifterna i betalningstabellen-

betalning_ id medlemsnummer betalningsdag beskrivning betalt belopp extern_ referens _nummer
1 1 23-07-2012 Betalning av filmuthyrning 2500 11
2 1 25-07-2012 Betalning av filmuthyrning 2000 12
3 3 30-07-2012 Betalning av filmuthyrning 6000 NULL

Frågan som visas nedan hämtar alla betalningar och summerar dem för att ge ett enda resultat.

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

Utförande av ovanstående fråga i MySQL-arbetsbänken mot myflixdb ger följande resultat.

 
SUM('amount_paid')
10500

AVG- funktion

MySQL AVG-funktionen returnerar genomsnittet av värdena i en angiven kolumn . Precis som SUM-funktionen fungerar den bara på numeriska datatyper .

Antag att vi vill hitta det genomsnittliga betalda beloppet. Vi kan använda följande fråga -

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

Utförande av ovanstående fråga i MySQL-arbetsbänk ger oss följande resultat.

 
AVG('amount_paid')
3500

Sammanfattning

  • MySQL stöder alla de fem (5) ISO-standardaggregatfunktionerna COUNT, SUM, AVG, MIN och MAX.
  • SUM- och AVG-funktionerna fungerar endast på numeriska data.
  • Om du vill utesluta dubbla värden från de sammanlagda funktionsresultaten använder du nyckelordet DISTINCT. ALLA nyckelordet innehåller även dubbletter. Om inget specificeras antas ALL som standard.
  • Aggregerade funktioner kan användas i kombination med andra SQL-satser som GROUP BY

Hjärngymnastik

Du tycker att aggregerade funktioner är enkla. Prova detta!

Följande exempel grupperar medlemmar efter namn, räknar det totala antalet betalningar, det genomsnittliga betalningsbeloppet och den totala summan av betalningsbeloppen.

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

Att genomföra exemplet ovan i MySQL-arbetsbänken ger oss följande resultat.