Формирование групп
161
++++++
1 row in set (0.00 sec)
Даже при добавлении в
таблицу значения
null
функции
sum()
,
max()
и
avg()
возвращают те же значения; это означает, что они игнорируют
все встречающиеся значения
null
.
Функция
count(*)
теперь
возвращает
значение
4
, что является правильным, поскольку в таблице
number_tbl
четыре строки, тогда как функция
count(val)
попрежнему возвращает
значение
3
. Разница в том, что функция
count(*)
считает строки и по
этому не подвержена влиянию значений
null
, содержащихся в строке.
А
вот функция
count(val)
считает
значения
в столбце
val
, пропуская
все встречающиеся значения
null
.
Формирование групп
Мало кого заинтересуют необработанные данные; тем,
кто занимается
анализом, потребуются обработанные данные, приведенные к виду,
наиболее соответствующему их нуждам. Среди обычных примеров ма
нипуляций с данными можно назвать:
•
Формирование общих показателей для географического региона,
например общий объем продаж по Европе.
•
Выявление
экстремумов, например лучший продавец 2005 года.
•
Определение повторяемости, например число новых счетов, откры
тых в каждом отделении.
Чтобы ответить на запросы подобных типов, вам потребуется попросить
сервер БД сгруппировать строки по одному
или более столбцам или вы
ражениям. Как уже было показано в нескольких примерах, механиз
мом группировки данных в рамках запроса является блок
group
by
.
В этом разделе рассматриваются группировка данных по одному или
более столбцам, группировка данных с
помощью выражений и форми
рование обобщений в рамках группы.
Группировка по одному столбцу
Формирование группы по одному столбцу – самый простой и наиболее
распространенный тип группировки. Например, если требуется найти
общие остатки (total balance)
для всех типов счетов, нужно всего лишь
провести группировку по столбцу
account.product_cd
:
mysql>
SELECT product_cd, SUM(avail_balance) prod_balance
> FROM account
> GROUP BY product_cd;
+++
| product_cd | prod_balance |
+++
| BUS | 9345.55 |
| CD | 19500.00 |