TS
Size: a a a
TS
TS
TS
ЕА
L
К
L
К
ЕА
WITH big_table AS```
(SELECT pay.user_id,
DATE_FORMAT(pay.date_paid,'%y-%m-%d') as paid_date,
pay.days,
DATE_ADD(DATE_FORMAT(pay.date_paid,'%y-%m-%d'), INTERVAL (days) DAY) as unpaid_date,
DATE_FORMAT(dl.date_download,'%y-%m-%d') as date_download,
dl.downloads,
DATE_FORMAT(bday.birthdate,'%y-%m-%d') AS birthdate,
DATEDIFF(dl.date_download, DATE_FORMAT(bday.birthdate,'%y-%m-%d')) AS diff_day
FROM sys.payments as pay
LEFT JOIN sys.downloads as dl
ON pay.user_id = dl.user_id
JOIN
( SELECT pay.user_id as user_id,
DATE_FORMAT(MIN(pay.date_paid),'%y-%m-%d') as birthdate
FROM sys.payments as pay
GROUP BY user_id
HAVING DATE_FORMAT(birthdate, '%y-%m-%d') > DATE_FORMAT('2020-10-01', '%y-%m-%d')
AND DATE_FORMAT(birthdate, '%y-%m-%d') < DATE_FORMAT('2020-10-12', '%y-%m-%d')
) as bday
ON pay.user_id = bday.user_id
WHERE date_download <= DATE_ADD(DATE_FORMAT(pay.date_paid,'%y-%m-%d'), INTERVAL (days) DAY)
AND DATEDIFF(dl.date_download, DATE_FORMAT(bday.birthdate,'%y-%m-%d')) >= 0
AND DATEDIFF(dl.date_download, DATE_FORMAT(bday.birthdate,'%y-%m-%d')) <= 10
ORDER BY user_id
) ,
uniq_user AS (SELECT COUNT(DISTINCT user_id) FROM big_table)
SELECT diff_day,
ROUND(COUNT(DISTINCT user_id)/(SELECT * FROM (uniq_user)),2) as retantion
FROM big_table
GROUP BY diff_day
ЕА
TS
L
WITH big_table AS```
(SELECT pay.user_id,
DATE_FORMAT(pay.date_paid,'%y-%m-%d') as paid_date,
pay.days,
DATE_ADD(DATE_FORMAT(pay.date_paid,'%y-%m-%d'), INTERVAL (days) DAY) as unpaid_date,
DATE_FORMAT(dl.date_download,'%y-%m-%d') as date_download,
dl.downloads,
DATE_FORMAT(bday.birthdate,'%y-%m-%d') AS birthdate,
DATEDIFF(dl.date_download, DATE_FORMAT(bday.birthdate,'%y-%m-%d')) AS diff_day
FROM sys.payments as pay
LEFT JOIN sys.downloads as dl
ON pay.user_id = dl.user_id
JOIN
( SELECT pay.user_id as user_id,
DATE_FORMAT(MIN(pay.date_paid),'%y-%m-%d') as birthdate
FROM sys.payments as pay
GROUP BY user_id
HAVING DATE_FORMAT(birthdate, '%y-%m-%d') > DATE_FORMAT('2020-10-01', '%y-%m-%d')
AND DATE_FORMAT(birthdate, '%y-%m-%d') < DATE_FORMAT('2020-10-12', '%y-%m-%d')
) as bday
ON pay.user_id = bday.user_id
WHERE date_download <= DATE_ADD(DATE_FORMAT(pay.date_paid,'%y-%m-%d'), INTERVAL (days) DAY)
AND DATEDIFF(dl.date_download, DATE_FORMAT(bday.birthdate,'%y-%m-%d')) >= 0
AND DATEDIFF(dl.date_download, DATE_FORMAT(bday.birthdate,'%y-%m-%d')) <= 10
ORDER BY user_id
) ,
uniq_user AS (SELECT COUNT(DISTINCT user_id) FROM big_table)
SELECT diff_day,
ROUND(COUNT(DISTINCT user_id)/(SELECT * FROM (uniq_user)),2) as retantion
FROM big_table
GROUP BY diff_day