Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- WITH
- preparedData as (
- SELECT
- userID,
- paymentAmount,
- paymentPeriod,
- paymentDateTime,
- EXTRACT(YEAR_MONTH FROM paymentDateTime) as prepaidPeriodStart,
- EXTRACT(YEAR_MONTH FROM DATE_ADD(paymentDateTime, INTERVAL paymentPeriod MONTH)) as prepaidPeriodEnd
- FROM
- payments
- WHERE
- paymentStatus = 1
- AND paymentPeriod BETWEEN 1 AND 12
- AND userID IS NOT NULL
- ),
- calendar as (
- select
- EXTRACT(YEAR_MONTH FROM paymentDateTime) as reportingYearMonth
- FROM payments
- GROUP BY reportingYearMonth
- )
- SELECT
- cal.reportingYearMonth,
- pd.paymentPeriod,
- count(DISTINCT userID) activeUsers
- FROM calendar cal
- JOIN preparedData pd ON cal.reportingYearMonth BETWEEN pd.prepaidPeriodStart AND prepaidPeriodEnd
- GROUP BY
- cal.reportingYearMonth,
- pd.paymentPeriod
- ORDER BY reportingYearMonth DESC
Add Comment
Please, Sign In to add comment