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

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

1、使用排名函数,根据uid进行分组,start_time进行升序;这样就可以实现排名为1即为该用户第一次登录
2、根据月份分组求出排名为1个数即可得出该月新增用户数。
3、然后对新增用户数进行max()开窗over(),并且根据月份升序,就可以得出截止当月的单月历史最大新增用户数
4、同理,然后对新增用户数进行sum()开窗over(),并且根据月份升序,就可以得出截止当月的累积用户数

# 在这里的开窗函数中,因为涉及到历史的数据,故不能使用partition by进行分区

with t1 as(
select
    uid,date_format(start_time,'%Y%m') start_month
    ,row_number() over(partition by uid order by start_time) ranking
from
    exam_record
)

select
    start_month,count(distinct uid) mau
    ,sum(if(ranking=1,1,0)) month_add_uv
    ,max(sum(if(ranking=1,1,0))) over(order by start_month) max_month_uv
    ,sum(sum(if(ranking=1,1,0))) over(order by start_month) cum_sum_uv
from
    t1
group by 
    start_month
order by start_month
全部评论

相关推荐

拓竹投了十多天了 一直没反应想起来还投了这家 看了眼发现已经挂了 苦笑(是我太不上心了)
机械打工仔:简历挂和你不太上心有啥关系,别啥都怪自己,自信点
投递拓竹科技等公司10个岗位
点赞 评论 收藏
分享
25届的可以参加26届秋招吗?身为25届的,现在辞职很尴尬,经验不足一年(正式工)又正在秋招,现在找工作有点尬住了
程序员小白条:哪有一年啊,才几个月吧,参加26秋招不存在的,社招了啊,你正式工都交过社保了
点赞 评论 收藏
分享
爱睡觉的冰箱哥:你是我今晚见过的最美的牛客女孩
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

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