6.1 Liste over samlede funktioner
Når du bruger rækkegruppering i SQL med operatoren GROUP BY
, kan du bruge SELECT
funktioner i sætningen, der fungerer på de grupperede data. Sådanne funktioner kaldes også aggregerede funktioner.
Her er en liste over de mest populære:
# | Fungere | Beskrivelse |
---|---|---|
1 | TÆLLE() | Returnerer antallet af værdier i en gruppe |
2 | SUM() | Returnerer summen af værdier i en gruppe |
3 | MAX() | Returnerer den maksimale værdi af en gruppe |
4 | MIN() | Returnerer minimumsværdien af en gruppe |
5 | AVG() | Returnerer middelværdien af en gruppe |
6 | BIT_AND() | Udfører en bitvis OG over alle gruppeværdier |
7 | BIT_OR() | Udfører en bitvis ELLER over alle gruppeværdier |
8 | BIT_XOR() | Udfører en bitvis XOR over alle gruppeværdier |
9 | GROUP_CONCAT() | Sammenkæder alle gruppeværdier i én streng |
Lad os nu se på nogle eksempler med vores samlede funktioner.
6.2 Analyse af medarbejdernes lønninger
Lad os beregne nogle statistikker om vores medarbejdere fra medarbejdertabellen .
Spørgsmål et: hvor mange ansatte har vi?
Hvis vi ønsker at finde ud af antallet af alle poster i tabellen, så kan vi bruge aggregatfunktionen til dette COUNT
. Anmodningen vil se således ud:
SELECT COUNT(*) FROM employee
Og som svar vil MySQL returnere tallet 6. Vi har 6 ansatte i afdelingen, inklusive en kat. Okay.
Spørgsmål to: hvor meget betaler vi om måneden til alle medarbejdere?
For at besvare dette spørgsmål skal vi opsummere lønningerne for alle ansatte. For at gøre dette bruger vi aggregatfunktionenSUM()
Anmodningen vil se således ud:
SELECT SUM(salary) FROM employee
Bemærk, at vi denne gang skal angive værdierne for hvilken kolonne, vi opsummerer. Vi har angivet en lønkolonne . Vi kan ikke bare summere alle felterne i en tabel.
Og som svar vil MySQL returnere nummeret 461000. Vi har 6 ansatte i afdelingen, og lønnen er 461 tusinde. For meget.
Og til sidst det tredje spørgsmål: hvad er vores maksimum- og minimumsløn i afdelingen? Nå, lad os beregne gennemsnitslønnen. For at gøre dette har vi brug for funktionerne MIN
og MAX
.AVG
Forespørgslen bliver en smule mere kompleks denne gang og ser sådan ud:
SELECT MIN(salary), AVG(salary), MAX(salary)
FROM employee
Resultatet af denne forespørgsel vil være:
MIN(løn) | AVG (løn) | MAX(løn) |
---|---|---|
1000 | 76833.3333 | 200.000 |
Minimumslønnen i vores afdeling er $1.000 - meget god. Den maksimale løn er 200 tusind, men dette er direktøren.
Men gennemsnitslønnen er for høj, du skal på en eller anden måde optimere omkostningerne. Lad os hyre en anden kat og det er det :)