Изучаем sql



Pdf көрінісі
бет142/261
Дата28.07.2022
өлшемі1,6 Mb.
#147825
1   ...   138   139   140   141   142   143   144   145   ...   261
Байланысты:
Изучаем SQL ( PDFDrive )

SELECT COUNT(*) num_rows,
> COUNT(val) num_vals,
> SUM(val) total,
> MAX(val) max_val,
> AVG(val) avg_val
> FROM number_tbl;
++++++
| num_rows | num_vals | total | max_val | avg_val |
++++++
| 3 | 3 | 9 | 5 | 3 |
++++++
1 row in set (0.00 sec)
Как и следовало ожидать, результаты таковы: и 
count(*)
, и 
count(val)
возвращают значение 
3

sum(val)
– значение 
9

max(val)
– 
5
, а 
avg(val)
– 
3
.
Теперь добавим в таблицу 
number_tbl
значение 
null
и выполним запрос
еще раз:
mysql> 
INSERT INTO number_tbl VALUES (NULL);
Query OK, 1 row affected (0.01 sec)
mysql> 
SELECT COUNT(*) num_rows,
> COUNT(val) num_vals,
> SUM(val) total,
> MAX(val) max_val,
> AVG(val) avg_val
> FROM number_tbl;
++++++
| num_rows | num_vals | total | max_val | avg_val |
++++++
| 4 | 3 | 9 | 5 | 3 |


Формирование групп
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 |


162

Достарыңызбен бөлісу:
1   ...   138   139   140   141   142   143   144   145   ...   261




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

    Басты бет