Aggreger funktioner i MySQL

Aggregerede funktioner handler om

  • Udførelse af beregninger på flere rækker
  • Af en enkelt kolonne i en tabel
  • Og returnere en enkelt værdi.

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

1) TÆL
2) SUM
3) AVG
4) MIN
5) MAKS

Hvorfor bruge aggregerede funktioner

Fra et forretningsperspektiv har forskellige organisationsniveauer forskellige informationskrav. Ledere på øverste niveauer er normalt interesserede i at kende hele figurer og ikke nødvendige de individuelle detaljer.

Aggregerede funktioner giver os mulighed for nemt at producere opsummerede data fra vores database.

Fra vores myflix-database kan ledelsen for eksempel kræve følgende rapporter

  • Mindst lejede film.
  • De fleste lejede film.
  • Gennemsnitligt antal, at hver film er lejet ud på en måned.

Vi producerer nemt ovenstående rapporter ved hjælp af aggregerede funktioner.

Lad os se nærmere på aggregerede funktioner.

COUNT funktion

Funktionen COUNT returnerer det samlede antal værdier i det angivne felt. Det virker på både numeriske og ikke-numeriske datatyper. Alle aggregerede funktioner ekskluderer som standard nulværdier, før der arbejdes på dataene.

COUNT (*) er en speciel implementering af COUNT-funktionen, der returnerer antallet af alle rækker i en specificeret tabel. COUNT (*) overvejer også nuller og dubletter.

Tabellen vist nedenfor viser data i filmlejetabellen

referencenummer Overførselsdato Retur dato medlemsnummer film_id film_ vendte tilbage
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

Lad os antage, at vi ønsker at få det antal gange, filmen med id 2 er blevet lejet ud

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

Udførelse af ovenstående forespørgsel i MySQL arbejdsbord mod myflixdb giver os følgende resultater.

COUNT('movie_id')
3

DISTINKT søgeord

DISTINKT søgeord

Det DISTINCT søgeord, der giver os mulighed for at udelade dubletter fra vores resultater. Dette opnås ved at gruppere lignende værdier sammen.

For at forstå konceptet Distinct, lad os udføre en simpel forespørgsel

SELECT `movie_id` FROM `movierentals`;

movie_id
1
2
2
2
3

Lad os nu udføre den samme forespørgsel med det særskilte søgeord-

SELECT DISTINCT `movie_id` FROM `movierentals`;

Som vist nedenfor udelader distinkt duplikerede poster fra resultaterne.

movie_id
1
2
3

MIN funktion

MIN-funktionen returnerer den mindste værdi i det angivne tabelfelt.

Lad os som et eksempel antage, at vi vil vide det år, hvor den ældste film i vores bibliotek blev udgivet, kan vi bruge MySQL's MIN funktion for at få den ønskede information.

Følgende forespørgsel hjælper os med at opnå det

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

Udførelse af ovenstående forespørgsel i MySQL workbench mod myflixdb giver os følgende resultater.

MIN('year_released')
2005

MAX funktion

Ligesom navnet antyder, er MAX-funktionen det modsatte af MIN-funktionen. Det returnerer den største værdi fra det angivne tabelfelt.

Lad os antage, at vi ønsker at få det år, hvor den seneste film i vores database blev udgivet. Det kan vi nemt bruge MAX-funktionen til at opnå.

Følgende eksempel returnerer det seneste udgivne filmår.

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

Udførelse af ovenstående forespørgsel i MySQL workbench ved hjælp af myflixdb giver os følgende resultater.

MAX('year_released')
2012

SUM funktion

Antag, at vi ønsker en rapport, der giver det samlede beløb for betalinger, der er foretaget indtil videre. Vi kan bruge MySQL SUM funktion som returnerer summen af ​​alle værdierne i den angivne kolonne. SUM virker kun på numeriske felter. Nulværdier er udelukket fra det returnerede resultat.

Følgende tabel viser dataene i betalingstabel-

betalings_id medlemsnummer betalingsdato beskrivelse betalt beløb ekstern_ reference _nummer
1 1 23-07-2012 Betaling for filmleje 2500 11
2 1 25-07-2012 Betaling for filmleje 2000 12
3 3 30-07-2012 Betaling for filmleje 6000 NULL

Forespørgslen vist nedenfor får alle betalinger foretaget og opsummerer dem for at returnere et enkelt resultat.

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

Udførelse af ovenstående forespørgsel i MySQL workbench mod myflixdb giver følgende resultater.

SUM('amount_paid')
10500

AVG funktion

MySQL AVG funktion returnerer gennemsnittet af værdierne i en specificeret kolonne. Ligesom SUM-funktionen er det virker kun på numeriske datatyper.

Antag, at vi ønsker at finde det gennemsnitlige betalte beløb. Vi kan bruge følgende forespørgsel -

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

Udførelse af ovenstående forespørgsel i MySQL workbench, giver os følgende resultater.

AVG('amount_paid')
3500

Hjerne teaser

Du tror, ​​at aggregerede funktioner er nemme. Prøv dette!

Følgende eksempel grupperer medlemmer efter navn, tæller det samlede antal betalinger, det gennemsnitlige betalingsbeløb og totalsummen af ​​betalingsbeløbene.

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

Udførelse af ovenstående eksempel i MySQL workbench giver os følgende resultater.

AVG funktion

Resumé

  • MySQL understøtter alle de fem (5) ISO-standard aggregerede funktioner COUNT, SUM, AVG, MIN og MAX.
  • SUM og AVG funktioner virker kun på numeriske data.
  • Hvis du vil udelukke duplikerede værdier fra de samlede funktionsresultater, skal du bruge nøgleordet DISTINCT. Nøgleordet ALL inkluderer endda dubletter. Hvis intet er angivet, antages ALLE som standard.
  • Aggregerede funktioner kan bruges sammen med andre SQL-sætninger som f.eks GROUP BY