Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АрхитектураБиологияГеографияДругоеИностранные языки
ИнформатикаИсторияКультураЛитератураМатематика
МедицинаМеханикаОбразованиеОхрана трудаПедагогика
ПолитикаПравоПрограммированиеПсихологияРелигия
СоциологияСпортСтроительствоФизикаФилософия
ФинансыХимияЭкологияЭкономикаЭлектроника

Gt; FROM account. _> where open_date > '1999_12_31' _> group by year(open_date);

Краткий обзор подзапросов | Упражнения | Внешние соединения | Сравнение левосторонних и правосторонних внешних соединений | Трехсторонние внешние соединения | Рекурсивные внешние соединения | Перекрестные соединения | Естественные соединения | Что такое условная логика? | Выражение case |


Читайте также:
  1. Answer the following questions using your own words but taking into account the
  2. FROM account
  3. Gt; FROM account
  4. Gt; FROM account
  5. Gt; FROM account
  6. Gt; FROM account

 

_> WHERE open_date > '1999_12_31' _> GROUP BY YEAR(open_date);

 

+______+__________+ | year | how_many | +______+__________+

 

| 2000 |   |
| 2001 |   |
| 2002 |   |
|   |   |
|   |   |

+______+__________+

 

5 rows in set (0.00 sec)

 

Чтобы трансформировать этот результирующий набор в одну строку с шестью столбцами (по одному для каждого года, с 2000 по 2005), по_ надобится создать шесть столбцов и в каждом столбце просуммировать только строки, относящиеся к данному году:


 

        Глава 11. Условная логика
         
mysql> SELECT      
_> SUM(CASE      
_> WHEN EXTRACT(YEAR FROM open_date) = 2000 THEN 1
_> ELSE    
_> END) year_2000,  
_> SUM(CASE      
_> WHEN EXTRACT(YEAR FROM open_date) = 2001 THEN 1
_> ELSE    
_> END) year_2001,  
_> SUM(CASE      
_> WHEN EXTRACT(YEAR FROM open_date) = 2002 THEN 1
_> ELSE    
_> END) year_2002,  
_> SUM(CASE      
_> WHEN EXTRACT(YEAR FROM open_date) = 2003 THEN 1
_> ELSE    
_> END) year_2003,  
_> SUM(CASE      
_> WHEN EXTRACT(YEAR FROM open_date) = 2004 THEN 1
_> ELSE    
_> END) year_2004,  
_> SUM(CASE      
_> WHEN EXTRACT(YEAR FROM open_date) = 2005 THEN 1
_> ELSE    
_> END) year_2005  
_> FROM account    
_> WHERE open_date > '1999_12_31';  

 

+___________+___________+___________+___________+___________+___________+ | year_2000 | year_2001 | year_2002 | year_2003 | year_2004 | year_2005 | +___________+___________+___________+___________+___________+___________+

| 3 | 4 | 5 | 3 | 9 | 0 |

 

+___________+___________+___________+___________+___________+___________+ 1 row in set (0.01 sec)

 

Все шесть выражений для столбцов предыдущего запроса идентичны, за исключением значения года. Когда функция extract() возвращает нужный год, выражение case возвращает значение 1. В противном слу_ чае возвращается 0. Суммируя все счета, открытые с 2000 года, каж_ дый столбец возвращает число счетов, открытых в соответствующий год. Очевидно, что такие трансформации практически применимы только для небольшого числа значений. Решение задачи по формиро_ ванию столбцов для каждого года, начиная с 1905_го, быстро стало бы слишком громоздким.

 


Дата добавления: 2015-08-17; просмотров: 42 | Нарушение авторских прав


<== предыдущая страница | следующая страница ==>
Простые выражения case| Селективная агрегация

mybiblioteka.su - 2015-2024 год. (0.006 сек.)