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

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

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

问题:请输出自从有用户作答记录以来,每月的试卷作答记录中月活用户数、新增用户数、截止当月的单月最大新增用户数、截止当月的累积用户数。结果按月份升序输出。

1,这道题的关键问题在于第二个字段如何求累积新增用户数。这里刷过之前“全部题目”中应该遇到这种类型的问题。需要使用逆向思维根据uid分组求最小的月份,则这个月份的uid就是本月的新增用户,然后和原始表格链接时月份相等,再对uid求和就是每个月的新增人数。

2.第二个关键问题是后面几个字段到本月为止累积求最大值和求和。用over()的方法实现,之前也出现过。

SELECT r2.start_month, c1, COUNT(r1.uid) month_add_uv,
MAX(count(r1.uid)) OVER(order by r2.start_month) max_month_add_uv,
SUM(count(r1.uid)) OVER(order by r2.start_month) cum_sum_uv
from
	(SELECT uid, MIN(date_format(start_time,'%Y%m')) start_month 
    FROM exam_record
 	GROUP BY uid
 	) r1 
RIGHT JOIN
	(SELECT DATE_FORMAT(start_time,'%Y%m') start_month, 
    COUNT(DISTINCT uid) c1 
	FROM exam_record
	GROUP BY date_format(start_time,'%Y%m')
 	) r2 
 ON r1.start_month=r2.start_month 
GROUP BY r2.start_month, c1
全部评论

相关推荐

去B座二楼砸水泥地:不过也可以理解,这种应该没参加过秋招
点赞 评论 收藏
分享
小红书 后端选手 n*16*1.18+签字费期权
点赞 评论 收藏
分享
2 1 评论
分享
牛客网
牛客企业服务