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

月总刷题数和日均刷题数

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

SELECT 
    ifnull(submit_month,'2021汇总'), month_q_cnt,
    CASE WHEN submit_month is null THEN round(month_q_cnt/31, 3)
    ELSE round(month_q_cnt/days, 3) END
FROM(SELECT 
    date_format(submit_time, '%Y%m') submit_month,
    day(last_day(max(submit_time))) days,
    count(*) month_q_cnt
FROM practice_record pr
WHERE year(submit_time) = '2021'
GROUP BY submit_month
WITH ROLLUP) t

子查询用于筛选 每个符合时间要求的作答月份下的 答题总数 以及 该月天数,并用with rollup语句对2021年的总体情况进行汇总求和。

注意求每日天数的时候,可以对每个日期使用last_day()函数求出该月的最后一天的日期,并用day()函数提取日期,作为该月的总天数。

外层查询利用分组结果以及CASE...WHEN语句,分情况求出不同月份的统计值并输出。

按理来讲我这个代码好像漏掉了按月份排序的一步,但是也通过了,就懒得改了(不是)

全部评论

相关推荐

Aaso:挺好的,早挂早超生
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务