> WHERE p.product_type_cd = 'ACCOUNT'; +++++
| product | branch | name | tot_deposits |
+++++
| certificate of deposit | Headquarters | Michael Smith | 11500.00 |
| checking account | Headquarters | Michael Smith | 782.16 |
| money market account | Headquarters | Michael Smith | 14832.64 |
| savings account | Headquarters | Michael Smith | 767.77 |
| certificate of deposit | Woburn Branch | Paula Roberts | 8000.00 |
| checking account | Woburn Branch | Paula Roberts | 3315.77 |
| savings account | Woburn Branch | Paula Roberts | 700.00 |
| checking account | Quincy Branch | John Blake | 1057.75 |
| money market account | Quincy Branch | John Blake | 2212.50 |
| checking account | So. NH Branch | Theresa Markham | 67852.33 |
| savings account | So. NH Branch | Theresa Markham | 387.99 |
+++++
11 rows in set (0.00 sec)
Я понимаю, что «на вкус и цвет товарищей нет», но этот вариант за
проса мне нравится намного больше, чем большая плоская версия.
И он может быстрее выполняться, потому что группировка проведена
по небольшим столбцам внешних ключей (
product_cd
,
open_branch_id
,
open_emp_id
), а не по столбцам, предположительно содержащим длин
ные строки (
branch.name
,
product.name
,
employee.fname
,
employee.lname
).
Подзапросы в условиях фильтрации Во многих примерах данной главы подзапросы используются как вы
ражения в условиях фильтрации, поэтому для вас не будет сюрпри
зом, что это одно из основных применений подзапросов. Но условия
фильтрации, использующие подзапросы, встречаются не только в бло
ке
where
. Например, следующий запрос использует блок
having
для по
иска сотрудника, открывшего наибольшее количество счетов:
mysql>
SELECT open_emp_id, COUNT(*) how_many