Команда SQL для суммирования группы данных по дате

#sql

#sql

Вопрос:

У меня есть база данных, которая содержит:

  ---- --------------------- ------------- ----------------- 
| id | date                |          pay|        usr_type |
 ---- --------------------- ------------- ----------------- 
|  1 | 2016-10-17          |          500|             boss|
|  2 | 2016-10-17          |          200|             boss|
|  3 | 2016-10-24          |          300|             user|
|  4 | 2016-10-24          |          100|             user|
 ---- --------------------- ------------- ----------------- 
  

Я хочу, чтобы результаты были примерно такими:

  --------------------- ------------- ----------------- 
| date                |         user|             boss|
 ---- --------------------- -------- ----------------- 
| 2016-10-17          |            0|              700|
| 2016-10-24          |          400|                0|
 ---- --------------------- ------------- ------------ 
  

Ответ №1:

Вот один из вариантов, использующий conditional aggregation :

 select date, 
    sum(case when usr_type = 'user' then pay else 0 end) user,
    sum(case when usr_type = 'boss' then pay else 0 end) boss
from yourtable
group by date
  

Комментарии:

1. Могу ли я указать два условия в предложении WHEN?

2. @windc Конечно, >> когда usr_type = ‘user’ и usr_active=1 тогда… << например