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

Anonim

Aggregerte funksjoner handler om

  • Utføre beregninger på flere rader
  • Av en enkelt kolonne i et bord
  • Og returnerer en enkelt verdi.

ISO-standarden definerer fem (5) samlede funksjoner, nemlig;

1) TELL

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

Hvorfor bruke samlede funksjoner.

Fra et forretningsperspektiv har forskjellige organisasjonsnivå forskjellige informasjonskrav. Toppnivåledere er vanligvis interessert i å kjenne hele tall og ikke nødvendig de enkelte detaljene.

> Aggregerte funksjoner lar oss enkelt produsere oppsummerte data fra databasen vår.

For eksempel, fra myflix-databasen vår, kan ledelsen kreve følgende rapporter

  • Minst leide filmer.
  • Mest leide filmer.
  • Gjennomsnittlig antall som hver film leies ut i løpet av en måned.

Vi produserer enkelt rapporter ovenfor ved hjelp av samlede funksjoner.

La oss se nærmere på samlede funksjoner.

COUNT- funksjon

TELLE-funksjonen returnerer det totale antallet verdier i det angitte feltet. Det fungerer både på numeriske og ikke-numeriske datatyper. Alle samlede funksjoner ekskluderer som standard nullverdier før du arbeider med dataene.

COUNT (*) er en spesiell implementering av COUNT-funksjonen som returnerer tellingen av alle radene i en spesifisert tabell. COUNT (*) vurderer også Nulls and duplicate.

Tabellen nedenfor viser data i filmtabellen

referanse nummer Transaksjonsdato returdato medlemsnummer movie_id film_ returnerte
11 20-06-2012 NULL 1 1 0
12 22-06-2012 25-06-2012 1 2 0
1. 3 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

La oss anta at vi ønsker å få antall ganger filmen med id 2 har blitt leid ut

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

Å utføre spørringen ovenfor i MySQL arbeidsbenk mot myflixdb gir oss følgende resultater.

 
COUNT('movie_id')
3

DISTINCT nøkkelord

DISTINCT-nøkkelordet som lar oss utelate duplikater fra resultatene våre. Dette oppnås ved å gruppere lignende verdier sammen.

For å sette pris på begrepet Distinct, kan du utføre et enkelt spørsmål

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

La oss nå utføre den samme spørringen med det forskjellige nøkkelordet -

SELECT DISTINCT `movie_id` FROM `movierentals`;

Som vist nedenfor, utelater distinkte dupliserte poster fra resultatene.

 
movie_id
1
2
3

MIN- funksjon

MIN-funksjonen returnerer den minste verdien i det angitte tabellfeltet .

La oss anta at vi vil vite året den eldste filmen i biblioteket vårt ble utgitt, og vi kan bruke MySQLs MIN-funksjon for å få ønsket informasjon.

Følgende spørsmål hjelper oss med å oppnå det

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

Å utføre spørringen ovenfor i MySQL arbeidsbenk mot myflixdb gir oss følgende resultater.

 
MIN('year_released')
2005

MAX-funksjon

Akkurat som navnet antyder, er MAX-funksjonen det motsatte av MIN-funksjonen. Den returnerer den største verdien fra det angitte tabellfeltet .

La oss anta at vi ønsker å få året den siste filmen i databasen vår ble utgitt. Vi kan enkelt bruke MAX-funksjonen for å oppnå det.

Følgende eksempel returnerer det siste filmåret som ble utgitt.

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

Å utføre spørringen ovenfor i MySQL arbeidsbenk ved hjelp av myflixdb gir oss følgende resultater.

 
MAX('year_released')
2012

SUM- funksjon

Anta at vi vil ha en rapport som viser det totale beløpet som er gjort hittil. Vi kan bruke MySQL SUM- funksjonen som returnerer summen av alle verdiene i den angitte kolonnen . SUM fungerer bare på numeriske felt . Nullverdier er ekskludert fra det returnerte resultatet.

Tabellen nedenfor viser dataene i betalingstabellen-

betaling_ id medlemsnummer betalingsdato beskrivelse beløpet betalt ekstern_ referanse _nummer
1 1 23-07-2012 Betaling av leie av film 2500 11
2 1 25-07-2012 Betaling av leie av film 2000 12
3 3 30-07-2012 Betaling av leie av film 6000 NULL

Spørringen vist nedenfor får alle betalinger gjort og summerer dem for å gi et enkelt resultat.

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

Å utføre spørringen ovenfor i MySQL arbeidsbenk mot myflixdb gir følgende resultater.

 
SUM('amount_paid')
10500

AVG- funksjon

MySQL AVG-funksjonen returnerer gjennomsnittet av verdiene i en spesifisert kolonne . Akkurat som SUM-funksjonen fungerer den bare på numeriske datatyper .

Anta at vi vil finne gjennomsnittlig innbetalt beløp. Vi kan bruke følgende spørring -

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

Å utføre spørringen ovenfor i MySQL arbeidsbenk, gir oss følgende resultater.

 
AVG('amount_paid')
3500

Sammendrag

  • MySQL støtter alle de fem (5) ISO standard aggregatfunksjonene COUNT, SUM, AVG, MIN og MAX.
  • SUM- og AVG-funksjonene fungerer bare på numeriske data.
  • Hvis du vil ekskludere dupliserte verdier fra de samlede funksjonsresultatene, bruker du DISTINCT-nøkkelordet. ALL-nøkkelordet inkluderer til og med duplikater. Hvis ingenting er spesifisert antas ALL som standard.
  • Aggregerte funksjoner kan brukes i forbindelse med andre SQL-ledd som GROUP BY

Hjernetrim

Du synes samlede funksjoner er enkle. Prøv dette!

Følgende eksempel grupperer medlemmene etter navn, teller det totale antallet betalinger, det gjennomsnittlige betalingsbeløpet og den totale summen av betalingsbeløpene.

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

Å utføre eksemplet ovenfor i MySQL arbeidsbenk gir oss følgende resultater.