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

月总刷题数和日均刷题数

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

SELECT

    DATE_FORMAT (submit_time, '%Y%m') AS submit_month, -- 提取年月(如202108)

    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 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 year(submit_time) = 2021

order by

    submit_month  

;

-- DAY (LAST_DAY (submit_time),在 SQL 模式 ONLY_FULL_GROUP_BY 下,这会导致语法错误。具体的错误信息是,submit_time 在 SELECT 语句中使用了,但在 GROUP BY 中没有涉及。使用MAX完美解决

-- 在 SQL 中,ORDER BY 一般应该放在整个查询的最后部分,而不能在 UNION ALL 的某个子查询部分单独使用。

全部评论

相关推荐

那一天的Java_Java起来:他本来公司就是做这个的,不就是正常的游戏客户端和服务器开发,软硬件联动,有啥恶心不恶心的,提前告诉你就是怕你接受不了,接受不了就没必要再往后走流程浪费时间,虽然这公司是一坨。
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

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