首页 > 试题广场 >

平均活跃天数和月活人数

[编程题]平均活跃天数和月活人数
  • 热度指数:183544 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
用户在牛客试卷作答区作答记录存储在表exam_record中,内容如下:
exam_record表(uid用户ID, exam_id试卷ID, start_time开始作答时间, submit_time交卷时间, score得分)
请计算2021年每个月里试卷作答区用户平均月活跃天数avg_active_days和月度活跃人数mau,上面数据的示例输出如下:
解释:2021年7月有2人活跃,共活跃了3天(1001活跃1天,1002活跃2天),平均活跃天数1.5;2021年9月有4人活跃,共活跃了5天,平均活跃天数1.25,结果保留2位小数。
注:此处活跃指有交卷行为。
示例1

输入

drop table if exists exam_record;
CREATE TABLE exam_record (
    id int PRIMARY KEY AUTO_INCREMENT COMMENT '自增ID',
    uid int NOT NULL COMMENT '用户ID',
    exam_id int NOT NULL COMMENT '试卷ID',
    start_time datetime NOT NULL COMMENT '开始时间',
    submit_time datetime COMMENT '提交时间',
    score tinyint COMMENT '得分'
)CHARACTER SET utf8 COLLATE utf8_general_ci;

INSERT INTO exam_record(uid,exam_id,start_time,submit_time,score) VALUES
(1001, 9001, '2021-07-02 09:01:01', '2021-07-02 09:21:01', 80),
(1002, 9001, '2021-09-05 19:01:01', '2021-09-05 19:40:01', 81),
(1002, 9002, '2021-09-02 12:01:01', null, null),
(1002, 9003, '2021-09-01 12:01:01', null, null),
(1002, 9001, '2021-07-02 19:01:01', '2021-07-02 19:30:01', 82),
(1002, 9002, '2021-07-05 18:01:01', '2021-07-05 18:59:02', 90),
(1003, 9002, '2021-07-06 12:01:01', null, null),
(1003, 9003, '2021-09-07 10:01:01', '2021-09-07 10:31:01', 86),
(1004, 9003, '2021-09-06 12:01:01', null, null),
(1002, 9003, '2021-09-01 12:01:01', '2021-09-01 12:31:01', 81),
(1005, 9001, '2021-09-01 12:01:01', '2021-09-01 12:31:01', 88),
(1006, 9002, '2021-09-02 12:11:01', '2021-09-02 12:31:01', 89);

输出

202107|1.50|2
202109|1.25|4
头像 摸鱼学大师
发表于 2021-10-22 16:36:22
SQL17 平均活跃天数和月活人数 题目主要信息: 计算2021年每个月里试卷作答区用户平均月活跃天数avg_active_days和月度活跃人数mau 结果保留两位小数 问题拆分: 根据提交时间submit_time不为空筛选活跃的的人。知识点:select...from...where.. 展开全文
头像 天天向好
发表于 2022-02-15 16:50:56
SQL小白来写一下看过答案后的复盘思路。 根据题意: 查询出来的第一列是年月,所以需要用到时间格式化函数【date_format】,即 date_format(submit_time,%y%d) as month 查询出来的第二列是每月用户活跃天数除以每月活跃用 展开全文
头像 webary
发表于 2021-10-23 13:43:31
明确题意: 计算2021年每个月里试卷作答区用户平均月活跃天数avg_active_days和月度活跃人数mau 问题分解: 筛选2021年活跃的用户作答记录:where submit_time is not NULL and YEAR(submit_time)='2021' 获取用户-活跃日期 展开全文
头像 希望offer多多的牛油很想去夏威夷
发表于 2021-10-30 16:10:12
select CONCAT(YEAR(submit_time),if(MONTH(submit_time)>=10,null,0),MONTH(submit_time)) month, round(count(distinct uid,day(submit_time))/count(disti 展开全文
头像 酸菜鱼土豆大侠
发表于 2022-11-24 10:54:50
【场景】:平均活跃天数和月活人数 【分类】:分组查询、count(distinct 2个字段) 分析思路 难点: 1.如何计算活跃天数?对日期、用户去重 如何计算平均活跃天数 可能存在的情况: 一、2个不同用户在同一天有记录,活跃天数为2,活跃人数为2。 二、2个不同用户在不同天各有一条记录,活 展开全文
头像 无上清颜
发表于 2021-10-27 10:47:41
#该题的重点在于计算不同用户月活天数的总和,会有天数重复,要用distinct函数划分时间。另外,注意是2021年数据 select date_format(start_time,"%Y%m") as month, round(count(distinct uid,date_forma 展开全文
头像 起名字我不会了
发表于 2022-07-26 09:24:44
难点: 1.活跃的定义,有交卷行为,所以以下关于活跃人数和活跃天数的统计,都是围绕字段submit_time来展开   每月的用户平均活跃天数和月活跃人数,是按照月来进行聚类 所以group  by month 2.每月的用户平均活跃天数=本月用户活跃的天数总和 展开全文
头像 Cole4Youreyez
发表于 2022-04-13 15:40:17
请计算2021年每个月里试卷作答区用户平均月活跃天数avg_active_days和月度活跃人数mau. 注:此处活跃指有交卷行为。 求月活跃按group by month即可 但是该题有一个难点大部分人都容易出错,那就是计算平均月活天数的公式。 平均月活=该月活跃天数/该月总活跃人数 count( 展开全文
头像 波文
发表于 2021-11-23 15:45:51
-- 请计算2021年每个月里试卷作答区用户平均月活跃天数avg_active_days和月度活跃人数mau, -- 平均月活跃天数=总的活跃天数/月度活跃人数 月度活跃人数=提交的人数 总的活跃天数=每个用户活跃天数之和 -- 1、过滤非活跃数据 2、日期字符列 3、月分组 4、统计 COU 展开全文
头像 00Lelouch00
发表于 2022-01-21 08:06:41
要求 请计算2021年每个月里试卷作答区用户平均月活跃天数avg_active_days和月度活跃人数mau 思路 2021年: YEAR(submit_time) = 2021 每个月: group by month -- extract(YEAR_MONTH from submit_time) 展开全文