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

月总刷题数和日均刷题数

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

这道题主要是增加了一个汇总项,通常我们不会在SQL语句中增加汇总项,所以这道题多少有点画蛇添足。

这个题想完整的写出来需要蛮多知识点和测试

比较核心的是 知道LAST_DAY是返回每月最后一天的意思,加入day,可以知道这个月有多少天,max本来可以不加,因为有了汇总项目,不加的话汇总项的日期可能就会取到最后一个日期,可能就是30,如果加入了,会在返回的列表中获取最大的,必然位31。

另外就是要知道with rollup的存在。

还有汇总的字段构造也需要多种方式。基本上不把数据下载到本地,自己慢慢研究是不能完全吃懂这道题的。

select IFNULL(submit_month,"2021汇总") as submit_month, month_q_cnt ,avg_day_q_cnt

from (

select DATE_FORMAT(submit_time, '%Y%m') submit_month,

       count(submit_time) month_q_cnt,

       round(count(question_id)/MAX(day(LAST_DAY(submit_time))), 3) avg_day_q_cnt

from practice_record

where YEAR(submit_time)='2021'

group by DATE_FORMAT(submit_time, "%Y%m")

with rollup)t
全部评论

相关推荐

10-30 22:18
已编辑
毛坦厂中学 C++
点赞 评论 收藏
分享
3 1 评论
分享
牛客网
牛客企业服务