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

Anonim

Samlede 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ÆLL

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

Hvorfor bruge samlede funktioner.

Fra et forretningsperspektiv har forskellige organisationsniveauer forskellige krav til information. Topledere er normalt interesserede i at kende hele tal og ikke nødvendige de enkelte detaljer.

> Samlede funktioner giver os mulighed for let at producere opsummerede data fra vores database.

Fra vores myflix-database kan ledelsen f.eks. Kræve følgende rapporter

  • Mindst lejede film.
  • Mest lejede film.
  • Gennemsnitligt antal, som hver film lejes ud i en måned.

Vi producerer let ovenstående rapporter ved hjælp af samlede funktioner.

Lad os se nærmere på samlede funktioner.

COUNT- funktion

COUNT-funktionen returnerer det samlede antal værdier i det angivne felt. Det fungerer på både numeriske og ikke-numeriske datatyper. Alle samlede funktioner ekskluderer som standard nullværdier, før de arbejder på dataene.

COUNT (*) er en særlig implementering af COUNT-funktionen, der returnerer antallet af alle rækkerne i en specificeret tabel. COUNT (*) betragter også Nulls og duplikater.

Tabellen vist nedenfor viser data i tabel med film

referencenummer Overførselsdato Retur dato medlemsnummer film_id film_ vendte tilbage
11 20-06-2012 NUL 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 NUL 3 3 0

Lad os antage, at vi ønsker at få det antal gange, at 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 workbench mod myflixdb giver os følgende resultater.

 
COUNT('movie_id')
3

DISTINCT Nøgleord

DISTINCT-nøgleordet, der giver os mulighed for at udelade duplikater fra vores resultater. Dette opnås ved at gruppere lignende værdier sammen.

For at værdsætte begrebet Distinct kan vi 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 forskellige nøgleord -

SELECT DISTINCT `movie_id` FROM `movierentals`;

Som vist nedenfor udelader distinkter duplikatregistreringer 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, vi kan bruge MySQLs MIN-funktion til at få de ønskede oplysninger.

Den 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. Den 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. Vi kan nemt bruge MAX-funktionen til at opnå det.

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 viser det samlede beløb, der er foretaget hidtil. Vi kan bruge MySQL SUM- funktionen, som returnerer summen af ​​alle værdierne i den angivne kolonne . SUM fungerer kun på numeriske felter . Nulværdier er udelukket fra det returnerede resultat.

Følgende tabel viser dataene i betalingstabellen-

betaling_ id medlemsnummer betalingsdato beskrivelse betalt beløb ekstern_ reference _nummer
1 1 23-07-2012 Betaling af filmudlejning 2500 11
2 1 25-07-2012 Betaling af filmudlejning 2000 12
3 3 30-07-2012 Betaling af filmudlejning 6000 NUL

Forespørgslen 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-funktionen returnerer gennemsnittet af værdierne i en bestemt kolonne . Ligesom SUM-funktionen fungerer den kun på numeriske datatyper .

Antag, at vi vil 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

Resumé

  • MySQL understøtter alle de fem (5) ISO-standardaggregatfunktioner COUNT, SUM, AVG, MIN og MAX.
  • SUM- og AVG-funktionerne fungerer kun på numeriske data.
  • Hvis du vil ekskludere duplikatværdier fra de samlede funktionsresultater, skal du bruge DISTINCT-nøgleordet. ALLE nøgleordet indeholder endda dubletter. Hvis der ikke er angivet noget, antages ALL som standard.
  • Samlede funktioner kan bruges sammen med andre SQL-klausuler, såsom GROUP BY

Hjerne teaser

Du synes, at samlede funktioner er lette. Prøv dette!

Følgende eksempel grupperer medlemmer efter navn, tæller det samlede antal betalinger, det gennemsnitlige betalingsbeløb og den samlede sum 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.