Изучаем sql



Pdf көрінісі
бет195/261
Дата28.07.2022
өлшемі1,6 Mb.
#147825
1   ...   191   192   193   194   195   196   197   198   ...   261
Байланысты:
Изучаем SQL ( PDFDrive )

Примеры выражений case
Следующие разделы представляют различные примеры, иллюстри
рующие применение условной логики в SQLвыражениях.
Трансформации результирующих наборов
Иногда агрегирование проводится по конечному набору значений, на
пример по дням недели, но требуется, чтобы результирующий набор
включал всего одну строку с количеством столбцов, соответствующим
количеству значений, а не по одной строке на каждое значение. В ка
честве примера возьмем запрос, возвращающий число счетов, откры
тых в каждом году, начиная с 2000 года:
mysql> 
SELECT YEAR(open_date) year, COUNT(*) how_many
> FROM account
> WHERE open_date > '19991231'
> GROUP BY YEAR(open_date);
+++
| year | how_many |
+++
| 2000 | 3 |
| 2001 | 4 |
| 2002 | 5 |
| 2003 | 3 |
| 2004 | 9 |
+++
5 rows in set (0.00 sec)
Чтобы трансформировать этот результирующий набор в одну строку
с шестью столбцами (по одному для каждого года, с 2000 по 2005), по
надобится создать шесть столбцов и в каждом столбце просуммировать
только 
строки, относящиеся к данному году:


222
Глава 11. Условная логика
mysql> 
SELECT
>
SUM(CASE
>
WHEN EXTRACT(YEAR FROM open_date) = 2000 THEN 1
>
ELSE 0
>
END) year_2000,
>
SUM(CASE
>
WHEN EXTRACT(YEAR FROM open_date) = 2001 THEN 1
>
ELSE 0
>
END) year_2001,
>
SUM(CASE
>
WHEN EXTRACT(YEAR FROM open_date) = 2002 THEN 1
>
ELSE 0
>
END) year_2002,
>
SUM(CASE
>
WHEN EXTRACT(YEAR FROM open_date) = 2003 THEN 1
>


Достарыңызбен бөлісу:
1   ...   191   192   193   194   195   196   197   198   ...   261




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

    Басты бет