题解 | #月总刷题数和日均刷题数#

月总刷题数和日均刷题数

http://www.nowcoder.com/practice/f6b4770f453d4163acc419e3d19e6746

再次回顾这道题提交了好多次代码都出现同样的关于“group by”的报错记录,反复看了好久才发现问题出现在DAY(LAST_DAY(submit_time)),即每个月都有好多个submit_time,随之对应的就是last_day返回好多个31或者30,count(question_id)是一个数,假定为6,那么6/(30,30,30,30,30,30)必然报错,所以我们要去重,用max,min,avg都行。

但是奇怪的是,我之前做这道题的时候没有去重也能提交成功......

SELECT DATE_FORMAT(submit_time, '%Y%m') AS submit_month,
       COUNT(question_id) AS month_q_cnt,
       ROUND(COUNT(question_id)/MAX(DAY(LAST_DAY(submit_time))), 3) AS avg_day_q_cnt
FROM practice_record
WHERE submit_time IS NOT NULL AND YEAR(submit_time)='2021'
GROUP BY DATE_FORMAT(submit_time, '%Y%m')

UNION ALL

SELECT '2021汇总' AS submit_month,
       COUNT(question_id) AS month_q_cnt,
       ROUND(COUNT(question_id)/31, 3) AS avg_day_q_cnt
FROM practice_record
WHERE submit_time IS NOT NULL AND YEAR(submit_time)='2021'
ORDER BY submit_month

全部评论
我也发现了这个问题,留心观察一下去年10月那些答案,直接复制过来提交,也会有group by 的报错。 目前看来,解答题目最大的困难不是找数据,求答案,而是如何能让自己的语句顺利出数。
点赞 回复 分享
发布于 2022-05-10 15:56

相关推荐

06-15 02:05
已编辑
南昌航空大学 数据分析师
Eason三木:你如果想干技术岗,那几个发公众号合唱比赛的经历就去掉,优秀团员去掉,求职没用。然后CET4这种不是奖项,是技能,放到下面的专业技能里或者单独列一个英语能力。 另外好好改改你的排版,首行缩进完全没有必要,行间距好好调调,别让字和标题背景黏在一起,你下面说能做高质量PPT你得展现出来啊,你这简历排版我用PPT做的都能比你做的好。 然后自我评价,你如果要干数据工程师,抗压能力强最起码得有吧。
简历中的项目经历要怎么写
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
07-01 11:27
点赞 评论 收藏
分享
评论
6
收藏
分享

创作者周榜

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