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