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

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

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
全部评论

相关推荐

02-01 12:05
复旦大学 Java
腾讯的提前批大概率应该是没有笔试的,但是这个时候有相当部分的同学简历估计都没有准备好,没准备好的同学也不用急,大部分都是3月之后开,这个时候开的绝大多数都是神仙打架,问的东西也比较难,打算投递的同学也多看下计算机网络和操作系统,腾讯对这部分的知识问的比较多。另外多刷下牛客的热门题库,刷题注意刷ACM模式,和牛客的周赛题,腾讯有的部门会从这里面出原题。我是@程序员花海关注我,带你了解更多校招资讯!
程序员花海:还没有来得及准备的同学可以看下学习路线:https://www.nowcoder.com/discuss/824693499982315520?sourceSSR=users算法题:https://www.nowcoder.com/feed/main/detail/20e7a999fa04485b88340a274411ca0d?sourceSSR=users八股文:https://www.nowcoder.com/discuss/833102362771251200?sourceSSR=users简历书写方式:https://www.nowcoder.com/discuss/839907820706205696?sourceSSR=users都是以前在牛客发的文章~
软开人,秋招你打算投哪些...
点赞 评论 收藏
分享
joecii:如果没有工资,那可能没有工资是这家公司最小的问题了
找实习记录
点赞 评论 收藏
分享
评论
2
1
分享

创作者周榜

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