> UNION ALL > SELECT 'Average Joes' name, 5000 low_limit, 9999.99 high_limit > UNION ALL > SELECT 'Heavy Hitters' name, 10000 low_limit, 9999999.99 high_limit; ++++
| name | low_limit | high_limit |
++++
| Small Fry | 0 | 4999.99 |
| Average Joes | 5000 | 9999.99 |
| Heavy Hitters | 10000 | 9999999.99 |
++++
3 rows in set (0.00 sec)
Здесь с помощью оператора для работы с наборами
union
all
(объеди
нить все) результаты трех отдельных запросов сводятся в один резуль
тирующий набор. Каждый запрос получает три литерала. Результаты
этих трех запросов объединяются для формирования таблицы, состоя
щей из трех строк и трех столбцов. Теперь у нас есть запрос для форми
рования необходимых групп. Его можно поместить в блок
from
другого
запроса для формирования групп клиентов:
mysql>
SELECT groups.name, COUNT(*) num_customers > FROM > (SELECT SUM(a.avail_balance) cust_balance Группа Нижний предел (долларов) Верхний предел (долларов) Small Fry
(мелкота)
0
4 999,99
Average Joes
(середняки)
5 000
9 999,99
Heavy Hitters
(тяжеловесы)
10 000
9 999 999,99
186 Глава 9. Подзапросы
> FROM account a INNER JOIN product p > ON a.product_cd = p.product_cd > WHERE p.product_type_cd = 'ACCOUNT' > GROUP BY a.cust_id) cust_rollup INNER JOIN > (SELECT 'Small Fry' name, 0 low_limit, 4999.99 high_limit > UNION ALL > SELECT 'Average Joes' name, 5000 low_limit, > 9999.99 high_limit > UNION ALL > SELECT 'Heavy Hitters' name, 10000 low_limit,