Підручник із сукупних функцій 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 (*) також враховує нулі та дублікати.

У наведеній нижче таблиці наведені дані у таблиці фільмів

номер для посилань дата_ транзакції дата_повернення членський_ номер 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 дає такі результати.