6.1 Списък на агрегатни функции

Когато използвате групиране на редове в SQL с оператора GROUP BY, можете да използвате SELECTфункции в израза, които работят с групираните данни. Такива функции се наричат ​​още агрегатни функции.

Ето списък на най-популярните:

# функция Описание
1 БРОЯ() Връща броя на стойностите в група
2 SUM() Връща сумата от стойности в група
3 MAX() Връща максималната стойност на група
4 MIN() Връща минималната стойност на група
5 AVG() Връща средната стойност на група
6 BIT_AND() Извършва побитово И върху всички групови стойности
7 BIT_OR() Извършва побитово ИЛИ върху всички групови стойности
8 BIT_XOR() Извършва побитово XOR върху всички групови стойности
9 GROUP_CONCAT() Свързва всички групови стойности в един низ
Това не е пълен списък с агрегатни функции, но останалите са много специфични и не мисля, че ще ги използвате през следващите 5 години.Ако все още имате нужда от тях, винаги можете да прочетете официалната documentация за вашата СУБД.

Сега нека да разгледаме някои примери с нашите агрегатни функции.

6.2 Анализ на заплатите на служителите

Нека изчислим някои статистически данни за нашите служители от tableта на служителите .

Първи въпрос: колко служители имаме?

Ако искаме да разберем броя на всички записи в tableта, тогава можем да използваме агрегатната функция за това COUNT. Заявката ще изглежда така:

SELECT COUNT(*) FROM employee

И MySQL ще върне като отговор числото 6. Имаме 6 служители в отдела, включително котка. Добре.

Въпрос втори: колко плащаме на месец на всички служители?

За да отговорим на този въпрос, трябва да сумираме заплатите на всички служители. За целта използваме агрегатната функцияSUM()

Заявката ще изглежда така:

SELECT SUM(salary) FROM employee

Обърнете внимание, че този път от нас се изисква да посочим стойностите на коя колона обобщаваме. Посочor сме колона за заплати . Не можем просто да сумираме всички полета в table.

И MySQL ще върне като отговор числото 461000. Имаме 6 служители в отдела, а заплатата е 461 хиляди. Твърде много.

И накрая, третият въпрос: Howви са максималните и минималните ни заплати във ведомството? Е, нека изчислим средната заплата. За да направим това, имаме нужда от функциите MIN, MAXи AVG.

Този път заявката ще бъде малко по-сложна и ще изглежда така:

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

Резултатът от тази заявка ще бъде:

MIN (заплата) СР (заплата) МАКС (заплата)
1000 76833.3333 200 000

Минималната заплата в нашия отдел е 1000 долара – много добре. Максималната заплата е 200 хиляди, но това е директорът.

Но средната заплата е твърде висока, трябва по няHowъв начин да оптимизирате разходите. Да наемем друга котка и това е :)