Оператор GROUP BY в SQL

  |
 14046

 ǀ   2 

Оператор GROUP BY використовується для групування рядків по одному або декільком стовпцям. Наприклад:

Тут ми групуємо рядки по стовпцю country та підраховуємо кількість записів для кожної країни (використовуючи функцію COUNT()).

Примітка: Оператор GROUP BY використовується у поєднанні з агрегатними функціями, такими як MIN(), MAX(), SUM(), AVG(), COUNT() та ін.

Ім’я стовпця виконання функції COUNT(*)number, через використання псевдоніма (оператор AS).

Розглянемо інший приклад. Спробуємо знайти загальну суму замовлень для кожного клієнта:

Тут ми сумуємо значення стовпця amount після групування рядків за ідентифікатором customer_id.

Оператор GROUP BY з JOIN в SQL

Ми також можемо використовувати оператор GROUP BY з операторами JOIN. Наприклад:

Тут ми об’єднуємо таблиці Customers та Orders, а потім групуємо результат по полю customer_id. Це дозволяє нам дізнатися кількість замовлень, розміщених кожним клієнтом.

Оператор GROUP BY з декількома стовпцями

Оператор GROUP BY також можна використовувати для групування рядків на основі декількох стовпців. Наприклад:

Тут ми групуємо всіх людей з однаковою країною (country) та штатом (state) та вказуємо найменший вік (age) людини у кожній групі.

Оператор GROUP BY з оператором HAVING

Ми можемо використовувати оператор GROUP BY з оператором HAVING для фільтрації даних на основі агрегатних функцій. Наприклад:

Тут ми підраховуємо кількість клієнтів (customer_id), групуючи їх за країнами (country), а потім повертаємо результат за умови, що на кожну країну є більше 1 клієнта.

Оцінити статтю:

1 Зірка2 Зірки3 Зірки4 Зірки5 Зірок (21 оцінок, середня: 4,90 з 5)
Завантаження...

Коментарів: 2

  1. Микола :

    Не знаю як в інших СУБД, але в MS SQL такий запит навряд чи виконається. Бо в select ми можемо вивести або агрегативну функцію, або ключі, які знаходяться в GROUP BY. Тобто Customers.customer_id та Count(Orders.order_id) AS order_count воно покаже, проте на Customers.first_name буде матюкатися, типу такого

    "Column 'Customers.first_name ' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause."

    1. Дикун :

      select на 2 поля, то і group by на 2 поля має бути

Залишити відповідь

Ваш E-mail не буде опублікований. Обов'язкові поля відмічені *