Глава 8. Группировка и агрегаты
| CHK | 73008.01 |
| MM | 17045.14 |
| SAV | 1855.76 |
| SBL | 50000.00 |
+++
6 rows in set (0.00 sec)
Этот запрос формирует шесть групп, по одной для каждого типа сче
тов, и затем суммирует доступные остатки по всем строкам в каждой
группе.
Группировка по нескольким столбцам В некоторых случаях может понадобиться сформировать группы, ох
ватывающие
более одного столбца. Развивая предыдущий пример,
представим, что требуется найти общие остатки не только по каждому
типу счетов, но и по отделениям (например: каков общий остаток для
всех текущих счетов, открытых в отделении Woburn?). Следующий
пример демонстрирует, как это может быть реализовано:
mysql>
SELECT product_cd, open_branch_id, > SUM(avail_balance) tot_balance > FROM account > GROUP BY product_cd, open_branch_id; ++++
| product_cd | open_branch_id | tot_balance |
++++
| BUS | 2 | 9345.55 |
| BUS | 4 | 0.00 |
| CD | 1 | 11500.00 |
| CD | 2 | 8000.00 |
| CHK | 1 | 782.16 |
| CHK | 2 | 3315.77 |
| CHK | 3 | 1057.75 |
| CHK | 4 | 67852.33 |
| MM | 1 | 14832.64 |
| MM | 3 | 2212.50 |
| SAV | 1 | 767.77 |
| SAV | 2 | 700.00 |
| SAV | 4 | 387.99 |
| SBL | 3 | 50000.00 |
++++
14 rows in set (0.00 sec)
Этот вариант запроса формирует 14 групп, по одной для каждого обна
руженного в таблице
account
сочетания типа счетов и отделения. Стол
бец
open_branch_id
добавлен в блок
select
, а также введен в блок
group
by
,
поскольку он извлекается из таблицы, а не формируется агрегатной
функцией.