Урок за агрегирани функции на MySQL: SUM, AVG, MAX, MIN, COUNT, DISTINCT

Anonim

Обобщените функции са всичко

  • Извършване на изчисления на множество редове
  • От една колона на таблица
  • И връщане на единична стойност.

Стандартът ISO определя пет (5) съвкупни функции, а именно;

1) БРОЙ

2) SUM
3) AVG
4) MIN
5) MAX

Защо да използвате агрегирани функции.

От гледна точка на бизнеса различните организационни нива имат различни информационни изисквания. Мениджърите от най-високо ниво обикновено се интересуват от познаване на цели фигури и не са необходими отделните детайли.

> Обобщените функции ни позволяват лесно да създаваме обобщени данни от нашата база данни.

Например от нашата база данни myflix управлението може да изисква следните отчети

  • Най-малко наети филми.
  • Най-наети филми.
  • Среден брой, който всеки филм е даден под наем за един месец.

Лесно изготвяме горните отчети, като използваме обобщени функции.

Нека разгледаме подробно обобщените функции.

Функция COUNT

Функцията COUNT връща общия брой стойности в посоченото поле. Работи както на числови, така и на нечислови типове данни. Всички обобщени функции по подразбиране изключват нулевите стойности преди работа с данните.

COUNT (*) е специална реализация на функцията COUNT, която връща броя на всички редове в определена таблица. COUNT (*) също разглежда Nulls и дубликати.

Таблицата, показана по-долу, показва данни в таблицата за филми

номер за справка дата_ на транзакцията дата на връщане членски_ номер movie_id филм_ се върна
11. 20-06-2012 НУЛА 1 1 0
12 22-06-2012 25-06-2012 1 2 0
13 22-06-2012 25-06-2012 3 2 0
14. 21-06-2012 24-06-2012 2 2 0
15 23-06-2012 НУЛА 3 3 0

Да предположим, че искаме да получим броя на случаите, когато филмът с идентификатор 2 е отдаден под наем

SELECT COUNT(`movie_id`) FROM `movierentals` WHERE `movie_id` = 2;

Изпълнението на горната заявка в MySQL workbench срещу myflixdb ни дава следните резултати.

 
COUNT('movie_id')
3

DISTINCT ключова дума

Ключовата дума DISTINCT, която ни позволява да пропуснем дубликати от нашите резултати. Това се постига чрез групиране на подобни стойности.

За да оценим концепцията за Distinct, позволява да изпълним проста заявка

SELECT `movie_id` FROM `movierentals`;
 
movie_id
1
2
2
2
3

Сега нека изпълним същата заявка с отделната ключова дума -

SELECT DISTINCT `movie_id` FROM `movierentals`;

Както е показано по-долу, отделно пропуска дублиращи се записи от резултатите.

 
movie_id
1
2
3

MIN функция

Функцията MIN връща най-малката стойност в посоченото поле на таблицата .

Като пример, нека предположим, че искаме да знаем годината, в която е пуснат най-старият филм в нашата библиотека, можем да използваме функцията MIN на MySQL, за да получим желаната информация.

Следващата заявка ни помага да постигнем това

SELECT MIN(`year_released`) FROM `movies`;

Изпълнението на горната заявка в MySQL workbench срещу myflixdb ни дава следните резултати.

 
MIN('year_released')
2005

Функция MAX

Точно както подсказва името, функцията MAX е противоположна на функцията MIN. Той връща най-голямата стойност от посоченото поле на таблицата .

Да приемем, че искаме да получим годината, в която е издаден най-новият филм в нашата база данни. Лесно можем да използваме функцията MAX, за да постигнем това.

Следващият пример връща последната издадена филмова година.

SELECT MAX(`year_released`) FROM `movies`;

Изпълнението на горната заявка в MySQL workbench с помощта на myflixdb ни дава следните резултати.

 
MAX('year_released')
2012

SUM функция

Да предположим, че искаме отчет, който дава общ размер на извършените до момента плащания. Можем да използваме функцията MySQL SUM, която връща сумата от всички стойности в посочената колона . SUM работи само с цифрови полета . Нулевите стойности се изключват от върнатия резултат.

Следващата таблица показва данните в таблицата за плащания-

id_ на плащане членски_ номер дата за плащане описание платено количество външен_ референтен _ номер
1 1 23-07-2012 Плащане на наем на филм 2500 11.
2 1 25-07-2012 Плащане на наем на филм 2000 г. 12
3 3 30-07-2012 Плащане на наем на филм 6000 НУЛА

Показаната по-долу заявка получава всички извършени плащания и ги сумира, за да върне един резултат.

SELECT SUM(`amount_paid`) FROM `payments`;

Изпълнението на горната заявка в MySQL workbench срещу myflixdb дава следните резултати.

 
SUM('amount_paid')
10500

Функция AVG

Функцията MySQL AVG връща средната стойност на стойностите в определена колона . Подобно на функцията SUM, тя работи само върху числови типове данни .

Да предположим, че искаме да намерим средната платена сума. Можем да използваме следната заявка -

SELECT AVG(`amount_paid`) FROM `payments`;

Изпълнението на горната заявка в MySQL workbench ни дава следните резултати.

 
AVG('amount_paid')
3500

Обобщение

  • MySQL поддържа всичките пет (5) стандартни обобщени функции ISO COUNT, SUM, AVG, MIN и MAX.
  • Функциите SUM и AVG работят само с цифрови данни.
  • Ако искате да изключите дублиращи се стойности от резултатите от обобщената функция, използвайте ключовата дума DISTINCT. Ключовата дума ALL включва дори дубликати. Ако не е посочено нищо, по подразбиране се приема ALL.
  • Обобщените функции могат да се използват заедно с други SQL клаузи като GROUP BY

Главоблъсканица

Смятате, че обобщените функции са лесни. Опитайте тази!

Следващият пример групира членовете по име, отчита общия брой плащания, средната сума на плащанията и общата сума на сумите на плащанията.

SELECT m.`full_names`,COUNT(p.`payment_id`) AS `paymentscount`,AVG(p.`amount_paid`) AS `averagepaymentamount`,SUM(p.`amount_paid`) AS `totalpayments` FROM members m, payments p WHERE m.`membership_number` = p.`membership_number` GROUP BY m.`full_names`;

Изпълнението на горния пример в MySQL workbench ни дава следните резултати.