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

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

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

# 统计出每月新增的月活跃用户才是关键的核心所在。

# 世上无难事,只怕有心人  不关心用户ID,不关心试卷ID,只关心 每月的作答纪录情况 

/*
    # 统计每月的 月活用户数,新增用户数,截止当月的单月最大新增用户数。
    select C.start_month ,
           C.mau ,
           (case when C.lastMau is null then 
                 C.mau 
                  when C.lastMau is not null and C.mau>=C.lastMau then 
                 (C.mau-C.lastMau) 
                 else 0 end 
           ) month_add_uv,
           max(C.mau-if(C.lastMau is null,0,C.lastMau)) over(order by start_month) max_month_add_uv ,
           sum((case when C.lastMau is null then 
                 C.mau 
                  when C.lastMau is not null and C.mau>=C.lastMau then 
                 (C.mau-C.lastMau) 
                 else 0 end 
           )) over(order by start_month) cum_sum_uv 
      from (
        # 统计 每月份的月活用户数,上月月活用户数
    select B.start_month,
           count(B.uid) mau ,
           lag(count(B.uid),1) over(order by B.start_month) lastMau   # 上月的用户数。
           from (
    # 统计基表的基础数据  
    select A.start_month,A.uid from (
    select date_format(ER.start_time,'%Y%m') start_month ,
           ER.exam_id,
           ER.uid 
      from  exam_record ER 
     ) A 
     group by A.start_month,A.uid  
     ) B  
     group by B.start_month 
      ) C 
      order by C.start_month  ; 
     */


     #  统计每个月的新用户   

      
         select ER.start_month,  # 每月的月份数
                count(distinct ER.uid) , # 月活用户数 
                sum(ER.new_day) month_add_uv, # 新增用户数
                max(sum(ER.new_day)) over(order by ER.start_month) max_month_add_uv, # 截止当月的最大单月新增用户数
                sum(sum(ER.new_day)) over(order by ER.start_month) cum_sum_uv # 截止当月的累计单月新增用户数
           from (
         select *,
                date_format(start_time,'%Y%m') start_month,
                if(start_time = min(start_time) over(partition by uid),1,0) new_day 
            from exam_record 
               ) ER group by ER.start_month order by ER.start_month ;
             

全部评论

相关推荐

也许是天气_:实习这块全是假大空像AI生成的,没有实际内容。要体现出难点、亮点、解决问题的过程
点赞 评论 收藏
分享
Twilight_m...:还是不够贴近现实,中关村那块60平房子200万怎么可能拿的下来,交个首付还差不多
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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