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

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

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

# 先算出每个试卷的每月的做答数
# 再使用窗口函数进行累加
WITH temp_0 AS(
SELECT exam_id, start_month, COUNT(start_month) month_cnt
FROM (
    SELECT exam_id, DATE_FORMAT(start_time, "%Y%m") start_month
    FROM exam_record
    ) b
GROUP BY exam_id, start_month
)

SELECT exam_id, start_month, month_cnt,
        SUM(month_cnt) OVER(PARTITION BY exam_id ORDER BY start_month ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) cum_exam_cnt
FROM temp_0

犯的错: PARTITION 写错为PATITION

只有一个表,先求每个试卷的每月做题数,要使用DATE_FORMAT,还有分组

最后主查询使用SUM()即可,不使用窗口帧时,就是默认从该分组的第一行开始计算,直到当前行,同我的窗口帧的定义。

  • ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW:与默认行为相同,从分组的开始到当前行。
  • ROWS BETWEEN 1 PRECEDING AND CURRENT ROW:仅包含当前行和其前一行。
  • ROWS BETWEEN 3 PRECEDING AND 1 FOLLOWING:包含当前行、其前三行和后一行。
全部评论

相关推荐

不愿透露姓名的神秘牛友
07-07 11:35
程序员小白条:话太多,没实力和学历,差不多回答回答就行了,身份地位不一样
点赞 评论 收藏
分享
我是没经验的毕业生,这啥情况啊会不会是hr在刷kpi
JamesGosli...:字节boss属于是群发了,我都快入职字节了,其他部门还在和我boss打招呼
点赞 评论 收藏
分享
06-15 20:57
已编辑
门头沟学院 Java
CARLJOSEPH...:年轻人有傲气很正常,但是建议工作前洗净傲气。 说实在的,什么奖学金什么奖项的都很一般。尊重你的老师,在有时间的时候去上课,真遇到走不开的事,请态度端正地向你的老师说明情况,请求请假。我相信任何一个有师德的老师都会允许的(我的老师就是这样)。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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