题解 | #每份试卷每月作答数和截止当月的作答总数。#

每份试卷每月作答数和截止当月的作答总数。

http://www.nowcoder.com/practice/5f1cbe74c682485aa73e4c2b30f04a62

问题:请输出每份试卷每月作答数和截止当月的作答总数。

问题关键点在于累积求和。1.关键语句就是

sum(month_cnt) over(partition by exam_id order by start_month)

含义就是根据exam_id分组,根据start_month排序,然后进行累积sum求和

2.剩下的就是直接根据exam_id和date_format对时间类型修改成年和月,根据这两个分组后求和就行。

3.还能想到陷阱就是输出的月份是202001,应该%Y%m(大写的Y),小写的y输出的结果是2001。之前如果刷完全部题目的话这里应该不是问题。

以上。

SELECT exam_id, start_month, month_cnt, 
SUM(month_cnt) OVER(PARTITION BY exam_id ORDER BY start_month) 
FROM 
	(SELECT exam_id, DATE_FORMAT(start_time,'%Y%m') start_month, 	
    COUNT(start_time) month_cnt 
	FROM exam_record 
	GROUP BY exam_id, date_format(start_time,'%Y%m')
 	) r1 
 ORDER BY exam_id, start_month
 
全部评论

相关推荐

点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务