6.1 Lijst met statistische functies
Wanneer u rijgroepering gebruikt in SQL met de operator GROUP BY
, kunt u SELECT
functies in de instructie gebruiken die werken op de gegroepeerde gegevens. Dergelijke functies worden ook wel statistische functies genoemd.
Hier is een lijst met de meest populaire:
# | Functie | Beschrijving |
---|---|---|
1 | GRAAF() | Retourneert het aantal waarden in een groep |
2 | SOM() | Retourneert de som van waarden in een groep |
3 | MAX() | Retourneert de maximumwaarde van een groep |
4 | MIN() | Retourneert de minimumwaarde van een groep |
5 | AVG() | Retourneert het gemiddelde van een groep |
6 | BIT_AND() | Voert een bitsgewijze AND uit over alle groepswaarden |
7 | BIT_OR() | Voert een bitsgewijze OR uit over alle groepswaarden |
8 | BIT_XOR() | Voert een bitsgewijze XOR uit over alle groepswaarden |
9 | GROUP_CONCAT() | Voegt alle groepswaarden samen tot één string |
Laten we nu enkele voorbeelden bekijken met onze geaggregeerde functies.
6.2 Analyseren van salarissen van medewerkers
Laten we wat statistieken over onze werknemers uit de werknemerstabel berekenen .
Vraag één: hoeveel medewerkers hebben we?
Als we het aantal van alle records in de tabel willen weten, kunnen we hiervoor de aggregatiefunctie gebruiken COUNT
. Het verzoek ziet er als volgt uit:
SELECT COUNT(*) FROM employee
En MySQL geeft als antwoord het getal 6. We hebben 6 medewerkers op de afdeling, waaronder een kat. Oke.
Vraag twee: hoeveel betalen we maandelijks aan alle medewerkers?
Om deze vraag te beantwoorden, moeten we de salarissen van alle werknemers bij elkaar optellen. Hiervoor gebruiken we de aggregatiefunctieSUM()
Het verzoek ziet er als volgt uit:
SELECT SUM(salary) FROM employee
Merk op dat we deze keer de waarden moeten specificeren van welke kolom we samenvatten. We hebben een salariskolom gespecificeerd . We kunnen niet zomaar alle velden in een tabel optellen.
En MySQL retourneert als antwoord het nummer 461000. We hebben 6 medewerkers op de afdeling en het salaris is 461 duizend. Te veel.
En tot slot de derde vraag: wat zijn onze maximum- en minimumsalarissen op de afdeling? Nou, laten we het gemiddelde salaris berekenen. Hiervoor hebben we de functies MIN
, MAX
en AVG
.
De query zal deze keer iets complexer zijn en er als volgt uitzien:
SELECT MIN(salary), AVG(salary), MAX(salary)
FROM employee
Het resultaat van deze query zal zijn:
MIN(salaris) | AVG(salaris) | MAX(salaris) |
---|---|---|
1000 | 76833.3333 | 200000 |
Het minimumloon op onze afdeling is $ 1.000 – heel goed. Het maximale salaris is 200 duizend, maar dit is de directeur.
Maar het gemiddelde salaris is te hoog, u moet op de een of andere manier de kosten optimaliseren. Laten we nog een kat inhuren en dat is alles :)
GO TO FULL VERSION