6.1 Lista över aggregerade funktioner

När du använder radgruppering i SQL med operatorn GROUP BYkan du använda SELECTfunktioner i satsen som fungerar på den grupperade datan. Sådana funktioner kallas också aggregerade funktioner.

Här är en lista över de mest populära:

# Fungera Beskrivning
1 RÄKNA() Returnerar antalet värden i en grupp
2 BELOPP() Returnerar summan av värden i en grupp
3 MAX() Returnerar det maximala värdet för en grupp
4 MIN() Returnerar det lägsta värdet för en grupp
5 AVG() Returnerar medelvärdet för en grupp
6 BIT_AND() Utför bitvis OCH över alla gruppvärden
7 BIT_OR() Utför bitvis ELLER över alla gruppvärden
8 BIT_XOR() Utför en bitvis XOR över alla gruppvärden
9 GROUP_CONCAT() Sammanfogar alla gruppvärden till en sträng
Det här är inte en komplett lista över aggregerade funktioner, men resten är väldigt specifika och jag tror inte att du kommer att använda dem under de kommande 5 åren.Om du fortfarande behöver dem kan du alltid läsa den officiella dokumentationen för ditt DBMS.

Låt oss nu titta på några exempel med våra aggregerade funktioner.

6.2 Analysera anställdas löner

Låt oss beräkna lite statistik om våra anställda från personaltabellen .

Fråga ett: hur många anställda har vi?

Om vi ​​vill ta reda på antalet av alla poster i tabellen kan vi använda aggregatfunktionen för detta COUNT. Förfrågan kommer att se ut så här:

SELECT COUNT(*) FROM employee

Och MySQL kommer att returnera siffran 6. Vi har 6 anställda på avdelningen, inklusive en katt. Okej.

Fråga två: hur mycket betalar vi per månad till alla anställda?

För att svara på denna fråga måste vi summera lönerna för alla anställda. För att göra detta använder vi aggregatfunktionenSUM()

Förfrågan kommer att se ut så här:

SELECT SUM(salary) FROM employee

Observera att vi denna gång måste ange värdena för vilken kolumn vi sammanfattar. Vi har angett en lönekolumn . Vi kan inte bara summera alla fält i en tabell.

Och som svar kommer MySQL att returnera numret 461000. Vi har 6 anställda på avdelningen, och lönen är 461 tusen. För mycket.

Och slutligen den tredje frågan: vilka är våra högsta och lägsta löner på avdelningen? Nåväl, låt oss räkna ut medellönen. För att göra detta behöver vi funktionerna och MIN.MAXAVG

Frågan blir lite mer komplex den här gången och ser ut så här:

SELECT MIN(salary), AVG(salary), MAX(salary)
FROM employee

Resultatet av denna fråga blir:

MIN(lön) AVG(lön) MAX(lön)
1000 76833.3333 200 000

Minimilönen på vår avdelning är $1 000 – mycket bra. Maxlönen är 200 tusen, men det här är direktören.

Men medellönen är för hög, du måste på något sätt optimera kostnaderna. Låt oss anställa en annan katt och det är allt :)