题解 | 每个6/7级用户活跃情况

# 粒度-用户
# 筛选符合条件的用户uid, 进行各各查询然后表连接
with tmp as 
(
    select
    uid
    from
    user_info
    where level > 5
)
,
tmp1 as 
(
    select
    uid,
    submit_time act_time
    from
    exam_record
    union all
    select
    uid,
    submit_time act_time
    from
    practice_record
)   
,
month_cnt as 
(
    select
    tmp.uid
    ,count(distinct date_format(act_time, '%Y-%m')) act_month_total
    from 
    tmp
    left join
    tmp1
    on tmp.uid = tmp1.uid
    group by tmp.uid
)
,
days_cnt as 
(
    select
    tmp.uid
    ,count(distinct date(act_time)) act_days_2021
    from 
    tmp
    left join
    tmp1
    on tmp.uid = tmp1.uid
    and year(act_time) = 2021
    group by tmp.uid
)
,
exams_cnt as 
(
    select
    tmp.uid
    ,count(distinct date(submit_time)) act_days_2021_exam
    from 
    tmp
    left join
    exam_record er
    on tmp.uid = er.uid
    where year(submit_time) = 2021
    group by tmp.uid
)
,
questions_cnt as 
(
    select
    tmp.uid
    ,count(distinct date(submit_time)) act_days_2021_question
    from 
    tmp
    left join
    practice_record pr
    on tmp.uid = pr.uid
    where year(submit_time) = 2021
    group by tmp.uid
)

select
mc.uid
,act_month_total
,(case when act_days_2021 is not null then act_days_2021
    else 0 end) act_days_2021
,(case when act_days_2021_exam is not null then act_days_2021_exam
    else 0 end) act_days_2021_exam
,(case when act_days_2021_question is not null then act_days_2021_question
    else 0 end) act_days_2021_question
from
month_cnt mc
left join
days_cnt dc
on mc.uid = dc.uid
left join
exams_cnt ec
on mc.uid = ec.uid
left join 
questions_cnt qc
on mc.uid = qc.uid
order by act_month_total desc, act_days_2021 desc;

# 步骤:1.筛选出复合条件用户uid;2.分表求出各部分数据;3.表连接
# 注意点(1):需要保证符合条件的用户全部保留,故需要用left join
# 注意点(2):有的用户没有活跃天数,需要用case when 函数赋值为0








全部评论

相关推荐

2024-12-24 12:19
已编辑
中国石油_财务资产部_财务专员
(主页有本人真实求职记录及面试总结干货,欢迎大家移步~~~~)理工科的卷,与文/商/社科的卷,区别在哪?理工科能用后天的实习经历与技术能力在一定程度上弥补院校的劣势,牛客上有许多双非本科大佬们不断打磨技术、不停实习最终去字节、腾讯等大厂的例子。但,对于商科生来说,即使有big name的实习,也很难弥补院校上的差距。商科生的“出身”不好,就意味着一辈子都无法抬头。最典型的行业便是金融(投行、券商等),非顶级top不要。也许有人会说,不是所有人都去卷金融,但银行管培/客户经理/柜员、各类央国企财务/投资/人力/审计等校招岗位的简历门槛已经到了211本硕,双非本科的商科学子基本不会有下一步的笔面机会。成渝地区稍微优质一点的几个零星岗位就会瞬间吸引几百+的92硕简历。今年校招入职成渝某投资发展集团人力招聘岗的朋友告诉我,今年他们公司职能岗的校招门槛是:“本211,硕985基本不在简历复筛名单里”。也就是说,川大硕都大概率无法进入面试,清北复交一抓一大把,万幸她是去年秋招。P2是今年公司的校招新员工名单。理工岗位的同学不需要像我这样过五关斩六将,公司会直接去目标学校宣讲并签约。至于官网公布的校招岗位进面分数,职能岗更是遥遥领先理工岗位一大截。再次证明:投胎>选择>努力#牛客激励计划# #非技术求职现状# #秋招# #校招# #我的求职思考#
卢歌:双非不活啦
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务