题解 | #平均活跃天数和月活人数#

平均活跃天数和月活人数

https://www.nowcoder.com/practice/9e2fb674b58b4f60ac765b7a37dde1b9

努力练习sql中!

题目要求

  • 计算2021年每个月里试卷作答区用户平均月活跃天数avg_active_days和月度活跃人数mau
  • 结果保留两位小数

分析:用户平均活跃天数 = 所有用户活跃总天数/活跃用户总人数

这题我自己的解题思路是先求出2021年每天的数据,再统计每月的数据

select month,round((count(*)/count(distinct(uid))),2) as avg_active_days,count(distinct(uid)) as mau
from
    (
        select
			--时间转换为月,便于后面按月分组,这里不能用时间函数匹配了
            substring_index (time, '-', 1) as month,
            uid
        from
            (   --先求出2021年每天的数据,同一个用户一天可能多次提交,要去重
                select distinct
                    uid,
                    date_format (submit_time, '%Y%m-%d') as time
                from
                    exam_record
                where
                    submit_time is not null
                    and year (submit_time) = '2021'
            ) t1
    )t2
group by month

我的方法比较不灵活(各种细节使用还不够熟练),很多地方可以优化,不用那么多select,但是应该比较好懂。

这是大佬的代码!思路都一样的,就是写一起了。

select date_format(submit_time, '%Y%m') as month,
       round((count(distinct uid, date_format(submit_time, '%y%m%d'))) / count(distinct uid), 2) as avg_active_days,
       count(distinct uid) as mau
from exam_record
where submit_time is not null
and year(submit_time) = 2021
group by date_format(submit_time, '%Y%m')
#sql##sql练习日常##找工作好难#
全部评论

相关推荐

程序员小白条:你不是有一段实习了吗,现在找中大厂实习?过段时间要秋招了
我的简历长这样
点赞 评论 收藏
分享
Java抽象带篮子:简历怎么写可以看看我发的帖子,你的第一个是实习经历吗?那怎么写的是你的第一个练手项目呢?简历写的怎么样直接投小厂面试一下就知道了
没有实习经历,还有机会进...
点赞 评论 收藏
分享
但听说转正率很低,我现在有在实习了,好纠结要不要去
熬夜脱发码农:转正率低归低,但是实习的经历你可以拿着,又不是说秋招不准备了
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

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