• 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

  • 相关阅读:
    前后端结合解决Excel海量公式计算的性能问题
    Rust使用Iterator优化grep
    vue下载xlsx表格
    Mybatis返回自动递增主键值,通过实体
    深入了解接口测试:Postman 接口测试指南
    cookies,sessionStorage 和 localStorage 的区别
    姓名缘分查询易语言代码
    python接口自动化-参数关联
    Elsa依据工作流程Id实例化工作流并调用相关节点信号量执行
    springboot web外部容器部署
  • 原文地址:https://blog.csdn.net/m0_69157845/article/details/126773482