Aggregera funktioner i MySQL

Aggregerade funktioner handlar om

  • Utfรถra berรคkningar pรฅ flera rader
  • Av en enda kolumn i en tabell
  • Och returnera ett enda vรคrde.

ISO-standarden definierar fem (5) aggregerade funktioner, nรคmligen;

1) Rร„KNING
2) SUMMA
3) AVG
4) MIN
5) MAX

Varfรถr anvรคnda aggregerade funktioner

Ur ett affรคrsperspektiv har olika organisationsnivรฅer olika informationskrav. Chefer pรฅ hรถgsta nivรฅer รคr vanligtvis intresserade av att kรคnna till hela siffror och behรถver inte de enskilda detaljerna.

Aggregatfunktioner gรถr att vi enkelt kan producera sammanfattade data frรฅn vรฅr databas.

Till exempel, frรฅn vรฅr myflix-databas kan ledningen krรคva fรถljande rapporter

  • Minst hyrda filmer.
  • Mest hyrda filmer.
  • Genomsnittligt antal som varje film hyrs ut under en mรฅnad.

Vi producerar enkelt ovanstรฅende rapporter med hjรคlp av aggregerade funktioner.

Lรฅt oss titta pรฅ aggregerade funktioner i detalj.

COUNT-funktionen

Funktionen COUNT returnerar det totala antalet vรคrden i det angivna fรคltet. Det fungerar pรฅ bรฅde numeriska och icke-numeriska datatyper. Alla aggregerade funktioner exkluderar som standard nollvรคrden innan du arbetar med data.

COUNT (*) รคr en speciell implementering av COUNT-funktionen som returnerar antalet av alla rader i en specificerad tabell. COUNT (*) beaktar ocksรฅ nollor och dubbletter.

Tabellen nedan visar data i tabellen fรถr hyrfilmer

referensnummer Transaktions Datum ร…terlรคmningsdatum medlemsnummer movie_id film_ รฅtervรคnde
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

Lรฅt oss anta att vi vill fรฅ det antal gรฅnger som filmen med id 2 har hyrts ut

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

Utfรถr ovanstรฅende frรฅga i MySQL arbetsbรคnk mot myflixdb ger oss fรถljande resultat.

COUNT('movie_id')
3

DISTINKT nyckelord

DISTINKT nyckelord

Nyckelordet DISTINCT som gรถr att vi kan utelรคmna dubbletter frรฅn vรฅra resultat. Detta uppnรฅs genom att gruppera liknande vรคrden tillsammans.

Fรถr att uppskatta konceptet Distinct, lรฅt oss kรถra en enkel frรฅga

SELECT `movie_id` FROM `movierentals`;

movie_id
1
2
2
2
3

Lรฅt oss nu kรถra samma frรฅga med det distinkta nyckelordet-

SELECT DISTINCT `movie_id` FROM `movierentals`;

Som visas nedan utelรคmnar distinkt dubblettposter frรฅn resultaten.

movie_id
1
2
3

MIN-funktionen

MIN-funktionen returnerar det minsta vรคrdet i det angivna tabellfรคltet.

Som ett exempel, lรฅt oss anta att vi vill veta det รฅr dรฅ den รคldsta filmen i vรฅrt bibliotek slรคpptes, vi kan anvรคnda MySQLMIN-funktion fรถr att fรฅ รถnskad information.

Fรถljande frรฅga hjรคlper oss att uppnรฅ det

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

Utfรถr ovanstรฅende frรฅga i MySQL workbench mot myflixdb ger oss fรถljande resultat.

MIN('year_released')
2005

MAX-funktionen

Precis som namnet antyder รคr MAX-funktionen motsatsen till MIN-funktionen. Det returnerar det stรถrsta vรคrdet frรฅn det angivna tabellfรคltet.

Lรฅt oss anta att vi vill fรฅ det รฅr dรฅ den senaste filmen i vรฅr databas slรคpptes. Vi kan enkelt anvรคnda MAX-funktionen fรถr att uppnรฅ det.

Fรถljande exempel returnerar det senaste filmรฅret som slรคpptes.

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

Utfรถr ovanstรฅende frรฅga i MySQL workbench med myflixdb ger oss fรถljande resultat.

MAX('year_released')
2012

SUM-funktionen

Anta att vi vill ha en rapport som visar det totala antalet betalningar som gjorts hittills. Vi kan anvรคnda MySQL SUMMA funktion som returnerar summan av alla vรคrden i den angivna kolumnen. SUM fungerar endast pรฅ numeriska fรคlt. Nullvรคrden exkluderas frรฅn resultatet som returneras.

Fรถljande tabell visar uppgifterna i betalningstabellen-

betalnings-id medlemsnummer betalningsdag beskrivning betalt belopp extern_ referensnummer
1 1 23-07-2012 Betalning fรถr filmuthyrning 2500 11
2 1 25-07-2012 Betalning fรถr filmuthyrning 2000 12
3 3 30-07-2012 Betalning fรถr filmuthyrning 6000 NULL

Frรฅgan som visas nedan fรฅr alla betalningar gjorda och summerar dem fรถr att returnera ett enda resultat.

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

Utfรถr ovanstรฅende frรฅga i MySQL arbetsbรคnk mot myflixdb ger fรถljande resultat.

SUM('amount_paid')
10500

AVG fungera

MySQL AVG fungera returnerar medelvรคrdet av vรคrdena i en angiven kolumn. Precis som SUM-funktionen, det fungerar endast pรฅ numeriska datatyper.

Anta att vi vill hitta det genomsnittliga beloppet som betalats. Vi kan anvรคnda fรถljande frรฅga -

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

Utfรถr ovanstรฅende frรฅga i MySQL arbetsbรคnk, ger oss fรถljande resultat.

AVG('amount_paid')
3500

Hjรคrngymnastik

Du tror att aggregerade funktioner รคr lรคtta. Prova detta!

Fรถljande exempel grupperar medlemmar efter namn, rรคknar det totala antalet betalningar, det genomsnittliga betalningsbeloppet och den totala summan av betalningsbeloppen.

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รถr exemplet ovan i MySQL workbench ger oss fรถljande resultat.

AVG fungera

Sammanfattning

  • MySQL stรถder alla fem (5) ISO-standardaggregatfunktionerna COUNT, SUM, AVG, MIN och MAX.
  • SUMMA och AVG funktioner fungerar bara pรฅ numeriska data.
  • Om du vill utesluta dubbletter av vรคrden frรฅn de aggregerade funktionsresultaten, anvรคnd nyckelordet DISTINCT. Nyckelordet ALL inkluderar รคven dubbletter. Om inget anges antas ALL som standard.
  • Aggregatfunktioner kan anvรคndas tillsammans med andra SQL-satser som t.ex GRUPP AV

Sammanfatta detta inlรคgg med: