Сукупні функції - це все про
- Виконання обчислень на декількох рядках
- З однієї колонки таблиці
- І повернення одного значення.
Стандарт ISO визначає п'ять (5) сукупних функцій, а саме;
1) КОЛИЧКА
3) AVG
4) MIN
5) MAX
Навіщо використовувати агреговані функції.
З точки зору бізнесу, різні рівні організації мають різні вимоги до інформації. Менеджери вищого рівня, як правило, зацікавлені в знанні цілих цифр і не потрібні окремі деталі.
> Сукупні функції дозволяють легко отримувати узагальнені дані з нашої бази даних.
Наприклад, з нашої бази даних myflix для управління можуть знадобитися такі звіти
- Найменш орендовані фільми.
- Найчастіше знімаються фільми.
- Середня кількість, яку кожен фільм здає в оренду за місяць.
Ми легко створюємо вищезгадані звіти, використовуючи агреговані функції.
Давайте розглянемо сукупні функції докладно.
Функція COUNT
Функція COUNT повертає загальну кількість значень у вказаному полі. Він працює як на числових, так і на нечислових типах даних. Усі агреговані функції за замовчуванням виключають нульові значення перед початком роботи з даними.
COUNT (*) - це спеціальна реалізація функції COUNT, яка повертає кількість усіх рядків у зазначеній таблиці. COUNT (*) також враховує нулі та дублікати.
У наведеній нижче таблиці наведені дані у таблиці фільмів
номер для посилань | дата_ транзакції | дата_повернення | членський_ номер | movie_id | movie_ повернуто |
---|---|---|---|---|---|
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 щодо myflixdb дає нам такі результати.
COUNT('movie_id') |
---|
3 |
ВИЗНАЧЕННЯ ключового слова
Ключове слово 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 щодо myflixdb дає нам такі результати.
MIN('year_released') |
---|
2005 |
Функція MAX
Як і випливає з назви, функція MAX протилежна функції MIN. Він повертає найбільше значення із зазначеного поля таблиці .
Припустимо, ми хочемо отримати рік, коли вийшов останній фільм у нашій базі даних. Для цього ми можемо легко використовувати функцію MAX.
Наступний приклад повертає останній рік випуску фільму.
SELECT MAX(`year_released`) FROM `movies`;
Виконання вищезазначеного запиту в робочому середовищі MySQL за допомогою myflixdb дає нам такі результати.
MAX('year_released') |
---|
2012 |
Функція SUM
Припустимо, ми хочемо отримати звіт, який містить загальну суму виплат, здійснених до цього часу. Ми можемо використовувати функцію MySQL SUM, яка повертає суму всіх значень у вказаному стовпці . SUM працює лише з числовими полями . Нульові значення виключаються із результату, що повертається.
У наступній таблиці наведені дані в таблиці платежів -
ідентифікатор_платежу | членський_ номер | дата оплати | опис | виплачувана сума | external_ reference_number |
---|---|---|---|---|---|
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 щодо myflixdb дає такі результати.
SUM('amount_paid') |
---|
10500 |
Функція AVG
Функція MySQL AVG повертає середнє значення значень у вказаному стовпці . Як і функція SUM, вона працює лише з числовими типами даних .
Припустимо, ми хочемо знайти середню виплачену суму. Ми можемо використати такий запит -
SELECT AVG(`amount_paid`) FROM `payments`;
Виконання вищезазначеного запиту в робочому середовищі MySQL дає нам такі результати.
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 дає такі результати.