Samle funksjoner i MySQL

Aggregerte funksjoner handler om

  • Utføre beregninger på flere rader
  • Av en enkelt kolonne i en tabell
  • Og returnerer én enkelt verdi.

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

1) TELL
2) SUM
3) AVG
4) MIN
5) MAKS

Hvorfor bruke aggregerte funksjoner

Fra et forretningsperspektiv har ulike organisasjonsnivåer ulike informasjonskrav. Ledere på toppnivå er vanligvis interessert i å kjenne til hele figurer og ikke nødvendige individuelle detaljer.

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

Fra myflix-databasen vår kan ledelsen for eksempel kreve følgende rapporter

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

Vi produserer enkelt rapporter ovenfor ved hjelp av aggregerte funksjoner.

La oss se nærmere på aggregerte funksjoner.

COUNT funksjon

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

COUNT (*) er en spesiell implementering av COUNT-funksjonen som returnerer antallet av alle radene i en spesifisert tabell. COUNT (*) vurderer også nuller og duplikater.

Tabellen vist nedenfor viser data i leiefilmtabellen

referansenummer transaksjonsdato return_date medlemsnummer movie_id film_ returnerte
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

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ører spørringen ovenfor i MySQL arbeidsbenk mot myflixdb gir oss følgende resultater.

COUNT('movie_id')
3

DISTINKT nøkkelord

DISTINKT nøkkelord

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

For å sette pris på konseptet Distinct, la oss utføre en enkel spørring

SELECT `movie_id` FROM `movierentals`;

movie_id
1
2
2
2
3

La oss nå utføre det samme søket med det distinkte søkeordet-

SELECT DISTINCT `movie_id` FROM `movierentals`;

Som vist nedenfor utelater distinkt dupliserte poster fra resultatene.

movie_id
1
2
3

MIN funksjon

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

Som et eksempel, la oss anta at vi ønsker å vite året da den eldste filmen i biblioteket vårt ble utgitt, kan vi bruke MySQLsin MIN-funksjon for å få ønsket informasjon.

Følgende spørring hjelper oss å oppnå det

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

Utfører spørringen ovenfor i MySQL workbench 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 da den siste filmen i databasen vår ble utgitt. Vi kan enkelt bruke MAX-funksjonen for å oppnå det.

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

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

Utfører spørringen ovenfor i MySQL arbeidsbenk ved hjelp av myflixdb gir oss følgende resultater.

MAX('year_released')
2012

SUM funksjon

Anta at vi ønsker en rapport som gir totalbeløpet for betalinger som er gjort så langt. Vi kan bruke MySQL SUM funksjon som returnerer summen av alle verdiene i den angitte kolonnen. SUM fungerer kun på numeriske felt. Nullverdier er ekskludert fra resultatet som returneres.

Følgende tabell viser dataene i betalingstabellen-

betalings-ID medlemsnummer betalingsdato beskrivelse beløp_ betalt ekstern_referansenummer
1 1 23-07-2012 Betaling for leie av film 2500 11
2 1 25-07-2012 Betaling for leie av film 2000 12
3 3 30-07-2012 Betaling for leie av film 6000 NULL

Spørringen vist nedenfor får alle betalinger utført og summerer dem opp for å returnere ett enkelt resultat.

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

Utfører spørringen ovenfor i MySQL arbeidsbenk mot myflixdb gir følgende resultater.

SUM('amount_paid')
10500

AVG funksjon

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

Anta at vi ønsker å finne gjennomsnittsbeløpet som er betalt. Vi kan bruke følgende spørring –

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

Utfører spørringen ovenfor i MySQL arbeidsbenk, gir oss følgende resultater.

AVG('amount_paid')
3500

Hjernetrim

Du tror aggregerte funksjoner er enkle. Prøv dette!

Følgende eksempel grupperer medlemmer etter navn, teller det totale antallet betalinger, det gjennomsnittlige betalingsbeløpet og totalsummen 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.

AVG funksjon

Sammendrag

  • MySQL støtter alle de fem (5) ISO-standard aggregerte funksjonene COUNT, SUM, AVG, MIN og MAX.
  • SUM og AVG funksjoner fungerer kun på numeriske data.
  • Hvis du vil ekskludere dupliserte verdier fra de samlede funksjonsresultatene, bruker du nøkkelordet DISTINCT. Nøkkelordet ALL inkluderer til og med duplikater. Hvis ingenting er spesifisert, antas ALL som standard.
  • Aggregerte funksjoner kan brukes sammen med andre SQL-klausuler som f.eks GRUPPE AV