MySQL запрос подсчитать сумму платежа за первые три месяца после регистрации пользователя - PullRequest
0 голосов
/ 07 апреля 2020

У меня есть таблица с платежами

'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)

Я видел только один месяц Как решить и сгруппировать по месяцам и годам регистрации? (

...