2016-02-29 4 views
-1

Я хочу знать, сколько активных студентов присутствует по месяцам для целей статистики.Как суммировать сумму по группам в mysql

Настоящие данные как этот манекен таблица:

start_date quit_date dummyName 
----------------------------------------- 
2015-09-12 2015-12-12 foo 
2015-10-12 2015-12-12 bar 
2015-10-13 2015-12-12 bob 
2015-10-13 2015-12-12 rich 
2015-12-13 2015-12-31 eve 

результат был бы быть сгруппирован по месяцам. GROUP BY и SUM не работает, он должен быть кумулятивными, как это:

month  count 
----------------- 
2015-08  0 # no student added 
2015-09  1 # just one student was added in this month 
2015-10  4 # three more students added in october 
2015-11  4 # no student added 
2015-12  5 # one more student added 
2016-01  0 # all students quits in december, so january there is no students 

Как я могу сделать запрос, как это?

ответ

2

Для нескольких строк, как это, вы можете создать таблицу с датами, которые вы хотите сообщить о и использовании связанных подзапросов:

select date_format(eom, '%Y-%m') as yyyymm, 
     (select count(*) 
     from dummy du 
     where du.start_date <= d.eom and 
       du.quit_date > d.eom 
     ) NumStudents 
from (select date('2015-08-31') as eom union all 
     select date('2015-09-30') as eom union all 
     select date('2015-10-31') as eom union all 
     select date('2015-11-30') as eom union all 
     select date('2015-12-31') as eom union all 
     select date('2016-01-31') as eom 
    ) d;