题解 | #平均活跃天数和月活人数#
平均活跃天数和月活人数
https://www.nowcoder.com/practice/9e2fb674b58b4f60ac765b7a37dde1b9
-- 这题套路很深,但也符合常理
-- 一开始我解题的时候,就想应该存在同一个用户一天之内登录多次,这个肯定要先去重
-- 用户去重之后,加上限定的约束条件(submit_time)不为空,加上年份为2021
-- 此时就查询到每天的活跃用户(去重后)
-- 之后就比较简单,提取时间为年份月份形式
-- 然后依据这个条件分组计算即可
-- 平均活跃天数为月度登录总天数/月度登录的用户数(去重后)
-- 月度活跃人数统计uid唯一即可
SELECT
DATE_FORMAT(submit_date,'%Y%m') AS month,
ROUND(COUNT(uid) / COUNT(DISTINCT uid),2) AS
avg_active_days,
COUNT(DISTINCT uid) AS mau
FROM (
-- 同一天登录用户去重
SELECT
DISTINCT uid,
DATE_FORMAT(submit_time,'%Y%m%d') AS submit_date
FROM exam_record
WHERE YEAR(submit_time) LIKE "2021%" AND
submit_time IS NOT NULL
) AS t1
GROUP BY month
