У меня есть таблица с платежами
'pays'
user_id | payment_sum | payment_time
1234 | 100 | 2019-03-18
1235 | 140 | 2019-03-12
1234 | 90 | 2019-03-29
1234 | 100 | 2019-04-02
1235 | 120 | 2019-05-03
1234 | 90 | 2019-05-05
Затем у меня есть еще одна таблица с регистрациями пользователей
'regs'
user_id | reg_time | reg_channel | reg_source | reg_campaign
1234 | 2019-04-01 | cpc | google | brand_campaign
1235 | 2019-04-04 | cpa | facebook | creative_1
Как я могу рассчитать сумму платежа для первых трех месяцев пользователей после того, как результат рег быть сгруппированы по месяцам и годам пользователей и столбцам с количеством пользователей, которые заплатили в том же месяце регистрации, суммой платежей за первый месяц и количеством пользователей, которые заплатили в первые 3 месяца после регистрации (включая месяц регистрации) и суммой платежей первые три месяца - вот так
month-year_reg | Different_amount_payers_1st_month | sum_1st_month | Different_amount_after_3_m | sum_after_three_first_month
2019-01 | 145 | 10132 | 198 (also users, who reg in current month, but paid on 2nd or 3rd month after reg) | 41568
2019-02 | 119 | 9132 | 121 (also users, who reg in current month, but paid on 2nd or 3rd month after reg) | 31564
....
Сначала я попытался рассчитать сумму платежа для каждой когорты по месяцам за первые 3 месяца службы
and year(p.reg_time) = year(p.payment_time)
and month(p.reg_time) + 3 >= month(p.payment_time)
Но если для пользователя в месяце reg было 12 - я видел только один первый месяц
Когда я использовал условия where в reg_time и payment_time
date_add(p.payment_time, INTERVAL -3 MONTH)
Я видел только один месяц Как решить и сгруппировать по месяцам и годам регистрации? (