Изучаем sql


Группировка посредством выражений



Pdf көрінісі
бет144/261
Дата28.07.2022
өлшемі1,6 Mb.
#147825
1   ...   140   141   142   143   144   145   146   147   ...   261
Байланысты:
Изучаем SQL ( PDFDrive )
论文说明
Группировка посредством выражений
Кроме столбцов группировку данных можно выполнить на основании
значений, сгенерированных выражениями. Рассмотрим запрос, кото
рый группирует сотрудников по году начала их работы в банке:
mysql> 
SELECT EXTRACT(YEAR FROM start_date) year,
> COUNT(*) how_many
> FROM employee
> GROUP BY EXTRACT(YEAR FROM start_date);
+++
| year | how_many |
+++
| 2000 | 3 |
| 2001 | 2 |
| 2002 | 8 |
| 2003 | 3 |
| 2004 | 2 |
+++
5 rows in set (0.00 sec)
Этот запрос для группировки строк таблицы 
employee
использует до
вольно простое выражение, которое с помощью функции 
extract()
из
всей даты извлекает только значение года.
Формирование обобщений
Ранее в этой главе в разделе «Группировка по нескольким столбцам»
был показан пример формирования общих остатков счетов по каждо
му типу счетов и отделению. Однако допустим, что кроме общих остат
ков для каждого сочетания тип счетов/отделение требуется получить
и общие остатки по каждому отдельному типу счетов. Можно было бы
выполнить дополнительный запрос и объединить результаты, или за
грузить результаты запроса в электронную таблицу, или создать сце
нарий на Perl или Javaпрограмму, или применить какойлибо другой
механизм для получения данных и проведения дополнительных вы
числений. Но всетаки лучше всего использовать вариант 
with
rollup
(с обобщением), заставив выполнить всю эту работу сервер БД. Вот из
мененный запрос, использующий 
with
rollup
в блоке 
group
by
:
mysql> 
SELECT product_cd, open_branch_id,
> SUM(avail_balance) tot_balance
> FROM account
> GROUP BY product_cd, open_branch_id WITH ROLLUP;
++++
| product_cd | open_branch_id | tot_balance |
++++
| BUS | 2 | 9345.55 |
| BUS | 4 | 0.00 |
| BUS | NULL | 9345.55 |
| CD | 1 | 11500.00 |


164

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




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

    Басты бет