Hisense Lau 2023-02-18 11:25 采纳率: 77.8%
浏览 38
已结题

MySQL 分组的问题

牛客网刷题遇到的问题。

img


解释:2021年8月共有2次刷题记录,日均刷题数为2/31=0.065(保留3位小数);2021年9月共有3次刷题记录,日均刷题数为3/30=0.100;
我写的代码是这样的

img


但就是一直报错,深深的无力感,请各位看一下

  • 写回答

4条回答 默认 最新

  • allyfireshen 2023-02-18 11:51
    关注

    试了下代码是没有问题,看错误提示是因为你的mysql版本应该是5.7.5以上的高版本,而5.7.5以上的高版本实现了对功能依赖的检测,默认的sql_mode中包含了ONLY_FULL_GROUP_BY属性,这个属性保证了select到的列都在group by中出现,即MySQL会拒绝执行 select list、HAVING condition或ORDER BY list引用既不在GROUP BY子句中被命名,也不在功能上依赖于GROUP BY列(由GROUP BY列唯一确定)的未聚合列的查询,在5.7.5之前,MySQL没有检测到功能依赖项,only_full_group_by在默认情况下是不启用的。关于前5.7.5行为的描述,请参阅MySQL 5.6参考手册

    解决方式一:

    -- 先查询SQL_MODE
    select @@GLOBAL.sql_mode;
    
    -- 根据查询结果查找结果中是否包含了only_full_group_by模式,如果有的话就要把它去掉
    set @@GLOBAL.sql_mode="查询结果中其余剩余的mode"
    

    方式二:
    修改mysql配置文件,通过手动添加sql_mode的方式强制指定不需要ONLY_FULL_GROUP_BY属性

    
    -- 找到sql_mode = ,查看是否存在ONLY_FULL_GROUP_BY属性,如果存在,清除掉
    sql_mode="清除ONLY_FULL_GROUP_BY属性后的剩余不变" 
    

    方式三:
    不用改配置,修改SQL语句即可:

    
    SELECT
        ANY_VALUE(DATE_FORMAT( submit_time, '%Y%m' )) AS submit_month,
        ANY_VALUE(count( question_id )) AS month_q_cnt,
        ANY_VALUE(COUNT( question_id ) / DAY (LAST_DAY( submit_time ))) AS avg_day_q_cnt 
    FROM
        practice_record 
    GROUP BY
        DATE_FORMAT(submit_time,'%Y%m');
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(3条)

报告相同问题?

问题事件

  • 系统已结题 2月26日
  • 已采纳回答 2月18日
  • 创建了问题 2月18日

悬赏问题

  • ¥20 C# TCP服务端,客户端退出后,不断有数据进来
  • ¥15 HLs设计手写数字识别程序编译通不过
  • ¥15 Stata外部命令安装问题求帮助!
  • ¥15 从键盘随机输入A-H中的一串字符串,用七段数码管方法进行绘制。提交代码及运行截图。
  • ¥15 TYPCE母转母,插入认方向
  • ¥15 如何用python向钉钉机器人发送可以放大的图片?
  • ¥15 matlab(相关搜索:紧聚焦)
  • ¥15 基于51单片机的厨房煤气泄露检测报警系统设计
  • ¥15 路易威登官网 里边的参数逆向
  • ¥15 Arduino无法同时连接多个hx711模块,如何解决?