Изучаем sql


> 9999999.99 high_limit) groups



Pdf көрінісі
бет166/261
Дата28.07.2022
өлшемі1,6 Mb.
#147825
1   ...   162   163   164   165   166   167   168   169   ...   261
Байланысты:
Изучаем SQL ( PDFDrive )

> 9999999.99 high_limit) groups
> ON cust_rollup.cust_balance
> BETWEEN groups.low_limit AND groups.high_limit
> GROUP BY groups.name;
+++
| name | num_customers |
+++
| Average Joes | 2 |
| Heavy Hitters | 4 |
| Small Fry | 5 |
+++
3 rows in set (0.01 sec)
В блоке 
from
имеется два подзапроса: первый подзапрос, 
cust_rollup
,
возвращает общий остаток по депозитным счетам для каждого клиента,
а второй подзапрос, 
groups
, формирует таблицу, содержащую три груп
пы клиентов. Вот таблица, сгенерированная подзапросом 
cust_rollup
:
mysql> 
SELECT SUM(a.avail_balance) cust_balance
> 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_balance |
++
| 4557.75 |
| 2458.02 |
| 3270.25 |
| 6788.98 |
| 2237.97 |
| 10122.37 |
| 5000.00 |
| 3875.18 |
| 10971.22 |
| 23575.12 |
| 38552.05 |
++
11 rows in set (0.05 sec)
Затем таблица, сгенерированная подзапросом 
cust_rollup
, соединяется
с таблицей 
groups
посредством условия вхождения в диапазон (
cust_rol


Использование подзапросов
187
lup.cust_balance
BETWEEN
groups.low_limit
AND
groups.high_limit
). Нако
нец, соединенные данные группируются и подсчитывается число кли
ентов в каждой группе для формирования окончательного результиру
ющего набора.
Конечно, можно было бы не использовать подзапрос, а просто создать
постоянную таблицу для хранения описаний групп. При таком подхо
де через некоторое время БД изобиловала бы небольшими специаль
ными таблицами, причины появления которых мало кто помнил бы.
Мне приходилось работать в средах, где пользователям БД позволя
лось создавать собственные таблицы для специальных целей. Резуль
таты были просто губительными (таблицы, не включенные в резерв
ные копии; таблицы, потерянные при обновлениях сервера; простои
сервера изза проблем распределения памяти и т. д.). Однако, воору
жившись запросами, можно придерживаться политики, при которой
таблицы добавляются в БД, только если есть очевидная необходимость
хранения новых данных.


Достарыңызбен бөлісу:
1   ...   162   163   164   165   166   167   168   169   ...   261




©engime.org 2024
әкімшілігінің қараңыз

    Басты бет