165 SELECT product_cd, open_branch_id, SUM(avail_balance) tot_balance FROM account GROUP BY product_cd, open_branch_id WITH CUBE; ++++
| product_cd | open_branch_id | tot_balance |
++++
| NULL | NULL | 170754.46 |
| NULL | 1 | 27882.57 |
| NULL | 2 | 21361.32 |
| NULL | 3 | 53270.25 |
| NULL | 4 | 68240.32 |
| BUS | 2 | 9345.55 |
| BUS | 4 | 0.00 |
| BUS | NULL | 9345.55 |
| CD | 1 | 11500.00 |
| CD | 2 | 8000.00 |
| CD | NULL | 19500.00 |
| CHK | 1 | 782.16 |
| CHK | 2 | 3315.77 |
| CHK | 3 | 1057.75 |
| CHK | 4 | 67852.33 |
| CHK | NULL | 73008.01 |
| MM | 1 | 14832.64 |
| MM | 3 | 2212.50 |
| MM | NULL | 17045.14 |
| SAV | 1 | 767.77 |
| SAV | 2 | 700.00 |
| SAV | 4 | 387.99 |
| SAV | NULL | 1855.76 |
| SBL | 3 | 50000.00 |
| SBL | NULL | 50000.00 |
++++
25 rows in set (0.02 sec)
Применение
with
cube
дает на четыре строки больше, чем версия запро
са с
with
rollup
, по одной для каждого из четырех ID отделений. Как
и в случае с
with
rollup
, значения
null
в столбце
product_cd
обозначают
то, что производится суммирование по отделениям.
При работе с Oracle Database для указания на операцию
cube
также применяется немного отличающийся синтаксис. Блок
group by
из предыдущего запроса для Oracle выглядел бы так:
GROUP BY CUBE(product_cd, open_branch_id)
Условия групповой фильтрации В главе 4 были представлены различные типы условий фильтрации
и показано, как их можно использовать в блоке
where
. При группировке
данных тоже можно применять условия фильтрации к данным
после