• mysql求当月有多少天


    描述

    现有一张题目练习记录表practice_record,示例内容如下:

    iduidquestion_idsubmit_timescore
    1100180012021-08-02 11:41:0160
    2100280012021-09-02 19:30:0150
    3100280012021-09-02 19:20:0170
    4100280022021-09-02 19:38:0170
    5100380022021-08-01 19:38:0180

    请从中统计出2021年每个月里用户的月总刷题数month_q_cnt 和日均刷题数avg_day_q_cnt(按月份升序排序)以及该年的总体情况,示例数据输出如下:

    submit_monthmonth_q_cntavg_day_q_cnt
    20210820.065
    20210930.100
    2021汇总50.161

    解释:2021年8月共有2次刷题记录,日均刷题数为2/31=0.065(保留3位小数);2021年9月共有3次刷题记录,日均刷题数为3/30=0.100;2021年共有5次刷题记录(年度汇总平均无实际意义,这里我们按照31天来算5/31=0.161)

    牛客已经采用最新的Mysql版本,如果您运行结果出现错误:ONLY_FULL_GROUP_BY,意思是:对于GROUP BY聚合操作,如果在SELECT中的列,没有在GROUP BY中出现,那么这个SQL是不合法的,因为列不在GROUP BY从句中,也就是说查出来的列必须在group by后面出现否则就会报错,或者这个字段出现在聚合函数里面。

    示例1

    输入:

    drop table if exists practice_record;
    CREATE TABLE  practice_record (
        id int PRIMARY KEY AUTO_INCREMENT COMMENT '自增ID',
        uid int NOT NULL COMMENT '用户ID',
        question_id int NOT NULL COMMENT '题目ID',
        submit_time datetime COMMENT '提交时间',
        score tinyint COMMENT '得分'
    )CHARACTER SET utf8 COLLATE utf8_general_ci;
    
    INSERT INTO practice_record(uid,question_id,submit_time,score) VALUES
    (1001, 8001, '2021-08-02 11:41:01', 60),
    (1002, 8001, '2021-09-02 19:30:01', 50),
    (1002, 8001, '2021-09-02 19:20:01', 70),
    (1002, 8002, '2021-09-02 19:38:01', 70),
    (1003, 8002, '2021-08-01 19:38:01', 80);

    复制输出:

    202108|2|0.065
    202109|3|0.100
    2021汇总|5|0.161

    求当月有多少天:

    day(last_day(curdate()))

    group by 后 day(last_day(submit_time)) 是多个值 所以要用 avg() 聚合

    1. (select
    2. date_format(submit_time,'%Y%m') submit_month ,count(1) month_q_cnt,round(count(1)/avg(day(last_day(submit_time))),3) avg_day_q_cnt
    3. from
    4. practice_record
    5. where year(submit_time) = 2021
    6. group by date_format(submit_time,'%Y%m')
    7. )
    8. union all
    9. select
    10. '2021汇总',count(id),round(count(id)/31,3)
    11. from
    12. practice_record
    13. where year(submit_time) = 2021
    14. order by submit_month

  • 相关阅读:
    【Reinforcement Learning】蒙特卡洛算法
    反转问题(字符串和链表)
    使用scipy库将离散点连续化
    WPF ContentControl 和 ContentPresenter 之间有什么区别
    【C++】class的设计与使用(九)自定义函数对象(function object)
    解决Github上的README无法显示图片
    【中央任务调度系统—通信开发】
    【毕业设计】大数据用户画像分析系统 - 数据分析
    Talk|加州大学圣地亚哥分校程旭欣:视觉反馈下足式机器人的全身操作与运动
    【数据结构】单链表(不带头结点)基本操作的实现(C语言)
  • 原文地址:https://blog.csdn.net/m0_69157845/article/details/126773482