SQL GROUP BY: группировка данных в базах данных
SQL GROUP BY - это оператор, который используется для группировки данных в реляционных базах данных. Этот оператор группирует данные в таблице по выбранному столбцу или столбцам и применяет к ним агрегирующую функцию, такую как SUM, AVG, COUNT, MIN, MAX и т. д.
Рассмотрим следующую таблицу «orders» с данными о заказах в интернет-магазине:
| order_id | customer_id | order_date | order_total |
|----------|-------------|------------|-------------|
| 1 | 101 | 2021-03-01 | 100.00 |
| 2 | 102 | 2021-03-02 | 75.50 |
| 3 | 103 | 2021-03-03 | 50.00 |
| 4 | 104 | 2021-03-04 | 25.00 |
| 5 | 105 | 2021-03-05 | 150.75 |
Чтобы найти сумму заказов для каждого клиента, мы можем использовать оператор GROUP BY в SQL:
SELECT customer_id, SUM(order_total) as total_orders
FROM orders
GROUP BY customer_id;
Этот запрос вернет следующий результат:
| customer_id | total_orders |
|-------------|------------|
| 101 | 100.00 |
| 102 | 75.50 |
| 103 | 50.00 |
| 104 | 25.00 |
| 105 | 150.75 |
Как мы видим, данные были сгруппированы по столбцу «customer_id», а функция SUM была применена к столбцу «order_total». Каждый уникальный идентификатор клиента имеет свой суммарный заказ.
Теперь давайте рассмотрим другой пример, используя таблицу «employees» с данными о работниках:
| employee_id | department | salary |
|-------------|------------|--------|
| 1 | HR | 50000 |
| 2 | IT | 55000 |
| 3 | IT | 60000 |
| 4 | HR | 65000 |
| 5 | IT | 70000 |
Чтобы определить средний заработок для каждого департамента, мы можем использовать следующий запрос:
SELECT department, AVG(salary) as average_salary
FROM employees
GROUP BY department;
Результат будет следующий:
| department | average_salary |
|------------|---------------|
| HR | 57500 |
| IT | 61666.67 |
Как мы видим, данные были сгруппированы по столбцу «department», а функция AVG была применена к столбцу «salary». Мы получили средний заработок для каждого департамента.
В итоге, оператор GROUP BY в SQL позволяет группировать данные по одному или нескольким столбцам и применять к ним агрегирующие функции. Это полезный инструмент для анализа данных и вычисления статистических показателей.