6.1 Liste over samlede funktioner

Når du bruger rækkegruppering i SQL med operatoren GROUP BY, kan du bruge SELECTfunktioner 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
Dette er ikke en komplet liste over aggregerede funktioner, men resten er meget specifikke, og jeg tror ikke, du vil bruge dem de næste 5 år. Hvis du stadig har brug for dem, kan du altid læse den officielle dokumentation for dit DBMS.

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 MINog 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 :)