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
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.