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

月总刷题数和日均刷题数

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

相关推荐

投递长鑫存储等公司8个岗位
点赞 评论 收藏
分享
深夜书店vv:腾讯是这样的,去年很多走廊都加桌子当工区
点赞 评论 收藏
分享
评论
6
收藏
分享

创作者周榜

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