题解 | #每月及截止当月的答题情况#

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

http://www.nowcoder.com/practice/1ce93d5cec5c4243930fc5e8efaaca1e

题目分析

1、每月的试卷作答记录中月活用户数——count(distinct uid);

2、每月的试卷作答记录中新增用户数——min()over(),根据用户作答最小时间来判断是否新增用户,当作答时间=该用户所有作答时间时为新增,其余时间作答均不属于新增,可用窗口函数实现;

3、截止当月的单月最大新增用户数——max(sum())over(),先用sum()计算出每月的新增用户数,再用窗口函数找出最大值;

4、截止当月的累积用户数——sum(sum())over(),先用sum()计算出每月的新增用户数,再用窗口函数累计新增用户数;

5、结果按月份升序输出——order by。

答案参考

SELECT
    start_month
    ,count(distinct uid)mau,sum(new)month_add_uv
    ,max(sum(new))over(order by start_month)max_monthe_add_uv
    ,sum(sum(new))over(order by start_month)cum_sum_uv
FROM
   (SELECT
        *,date_format(start_time,'%Y%m')start_month
        ,if(start_time=min(start_time)over(partition by uid),1,0)new
    FROM
        exam_record)a
GROUP BY
    start_month
ORDER BY
	start_month;
全部评论

相关推荐

听说改名字就能收到offer哈:Radis写错了兄弟
点赞 评论 收藏
分享
7 收藏 评论
分享
牛客网
牛客企业服务