Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- WITH
- preparedData as (
- SELECT
- userID,
- paymentAmount,
- paymentPeriod,
- paymentDateTime,
- DATE_TRUNC(DATETIME(paymentDateTime), MONTH) as prepaidPeriodStart,
- DATE_TRUNC(DATE_ADD(DATETIME(paymentDateTime), INTERVAL paymentPeriod MONTH), MONTH) as prepaidPeriodEnd
- FROM
- `uptimerobot-001.ur.payments`
- WHERE
- paymentStatus = 1
- AND paymentPeriod BETWEEN 1 AND 12
- AND userID IS NOT NULL
- ),
- calendar as (
- select
- DATE_TRUNC(DATETIME(paymentDateTime), MONTH) as reportingYearMonth
- FROM `uptimerobot-001.ur.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
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement