题解 | #每月及截止当月的答题情况#

每月及截止当月的答题情况

https://www.nowcoder.com/practice/1ce93d5cec5c4243930fc5e8efaaca1e

WITH a AS (
    SELECT
        uid,
        DATE_FORMAT(start_time, '%Y%m' ) AS start_month,
        MIN(DATE_FORMAT(start_time, '%Y%m')) OVER (PARTITION BY uid) AS first_month
    FROM
        exam_record
),

b AS (
    SELECT
        start_month,
        COUNT(DISTINCT uid) AS mau
    FROM
        a
    GROUP BY
        start_month
),

c AS (
    SELECT
        start_month,
        COUNT(DISTINCT uid) AS month_add_uv
    FROM
        a
    WHERE
        start_month = first_month 
    GROUP BY
        start_month
),

d AS (
    SELECT
        start_month,
        mau,
        IFNULL(month_add_uv, 0) AS month_add_uv,
        MAX(IFNULL(month_add_uv, 0)) OVER (ORDER BY start_month) AS max_month_add_uv,
        SUM(IFNULL(month_add_uv, 0)) OVER (ORDER BY start_month) AS cum_sum_uv
    FROM
        b
    LEFT JOIN
        c USING(start_month)
)

SELECT
    *
FROM
    d
ORDER BY
    start_month

全部评论

相关推荐

05-27 14:57
西北大学 golang
强大的社畜在走神:27届真不用急,可以搞点项目、竞赛再沉淀沉淀,我大二的时候还在天天打游戏呢
投递华为等公司10个岗位
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务