文章目录

  • 1. 问题
  • 2.解决

1. 问题

代码:

SELECT t.user_id, MIN(t.date) first_buy_date, MAX(t.date) second_buy_date, t.cnt
FROM (SELECT *,ROW_NUMBER() OVER(PARTITION BY user_id ORDER BY date) rank_1,COUNT(product_name) OVER(PARTITION BY user_id ORDER BY date) cntFROM   order_infoWHERE  date > '2025-10-15' AND status = 'completed'AND product_name IN ('C++', 'Java', 'Python')) AS t
WHERE t.cnt >= 2 AND t.rank_1 <= 2
GROUP BY t.user_id
ORDER BY t.user_id;

报错:

SQL_ERROR_INFO:
"Expression #4 of SELECT list is not in GROUP BY clause and
contains nonaggregated column 't.cnt' which is not functionally
dependent on columns in GROUP BY clause;
this is incompatible with sql_mode=only_full_group_by"

2.解决

问题的原因是聚合函数无法与其它非分组字段在一起使用

所以需要讲子查询SELECT *, ROW_NUMBER() OVER(PARTITION BY user_id ORDER BY date) rank_1,中的偷懒写法SELECT * 改为相应的字段进行提取:SELECT user_id, date

注:其实的代码中还有一处 bug(不符合题意的地方):

不应该是

COUNT(product_name) OVER(PARTITION BY user_id ORDER BY date)

而应该是

COUNT(product_name) OVER(PARTITION BY user_id )

这里涉及到 窗口函数OVER()的用法,简单来说,有四种用法(拿count工资举例):

  • count() over() :总工资
  • count() over( partition by group ):每个组的总工资
  • count() over(order by date):累计工资
  • count() over(partition by group order by date):每个组的累计工资

SQL 报错:聚合函数无法与其他非分组字段混用相关推荐

  1. 利用sql报错帮助进行sql注入

    我们可以利用sql报错帮助进行sql注入,这里以sql server 为例: sql查询时,若用group by子句时,该子句中的字段必须跟select 条件中的字段(非聚合函数)完全匹配,如果是se ...

  2. Xshell安装sql报错:The GPG keys listed for the “MySQL 8.0 Community Server“ repository are already instal

    文章目录 Xshell安装sql报错:The GPG keys listed for the "MySQL 8.0 Community Server" repository are ...

  3. Xshell安装sql报错:······ RSA sha1 ((MD5) PGP) md5 NOT OK (MISSING KEYS: (MD5) PGP#3a79bd29)

    文章目录 Xshell安装sql报错:······ RSA sha1 ((MD5) PGP) md5 NOT OK (MISSING KEYS: (MD5) PGP#3a79bd29) 报错截图: 分 ...

  4. 数据库执行sql报错Got a packet bigger than 'max_allowed_packet' bytes及重启mysql

    准备在mysql上使用数据库A,但mysql5经过重装后,上面的数据库已丢失,只得通过之前备份的A.sql重新生成数据库A. 1.执行sql报错 在执行A.sql的过程中,出现如下错误:Got a p ...

  5. sql数据库查询聚合函数_如何使用SQL Server数据质量服务确保正确的数据聚合

    sql数据库查询聚合函数 介绍 (Introduction) An interesting opportunity arose at a client site during early Octobe ...

  6. DB2 sql报错后查证原因与解决问题的方法

    DB2 sql报错后查证原因与解决问题的方法 参考文章: (1)DB2 sql报错后查证原因与解决问题的方法 (2)https://www.cnblogs.com/BradMiller/p/31978 ...

  7. 关于vs在.cpp提取头文件运行的时候一直报错“xx函数主体重定义”

    .....本来把主函数的一些封装的函数放到头文件里面的,结果编译运行在主函数调用的时候头文件一直报错"xxxx函数"已经有主体, cpp文件就说我调用的头文件的函数名是未识别的标识 ...

  8. 一篇文章让你解决sql报错check the manual that corresponds to your MySQL server version for the right syntax to

    一篇文章让你解决sql报错 反馈 因为这一个问题,找到了很多类似问题,你在看到这篇博客时,可能不是这个,但是一定是下面其中一个: Mysql错误:check the manual that corre ...

  9. mybatis-plus自定义sql报错 ew.customSqlSegment

    mybatis-plus自定义sql报错: org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibat ...

最新文章

  1. 自己挖坑自己填,谷歌大改Transformer注意力,速度、内存利用率都提上去了
  2. 一种解决hadoop搭建出现的各种问题的简单粗暴的办法
  3. 网页打不开,却能上qq,何解?
  4. RSA加密的填充模式
  5. Flutter 入门指北(Part 13)之网络
  6. Chromium Android开发的Eclipse配置
  7. python time模块详解_py 模块之 time模块 讲解②
  8. JSP+Tomcat+SQL Server 2000+JDBC实现合同信息管理系统
  9. signature=4abdf782f13579fc1b57d94a0c6ce95c,β-lactam-associated eosinophilic colitis
  10. 和为S(51Nod-2518)
  11. php sub pos,PHP pos() 函数
  12. Element-ui框架Tree树形控件切换高亮显示选中效果
  13. Asciidoctor Maven插件使用
  14. 关于constraint 的disable和enable
  15. Linux三剑客之grep
  16. 目前常见软件保护技术概述
  17. GPS信息中提取经纬度坐标信息
  18. TCP的三次握手和四次握手详解
  19. Effective Java(第3版) 90条经验法则
  20. 女朋友生气了该怎么办·《每天懂一点爱情心理学》·一

热门文章

  1. MIPS指令集-mars-cpu
  2. 求逆和共轭转置为什么能够交换
  3. 阿里云MaxCompute携手华大基因打造精准医疗应用云平台
  4. centos下安装看门狗的方法
  5. Java 合并、拆分PPT幻灯片
  6. mongodb 百万_MongoDB查询性能超过500万条记录
  7. 201571030139/201571030134《小学生四则运算练习软件需求说明》结对项目报告
  8. commvault备份mysql数据库_Oracle数据库的备份和恢复-Commvault.PDF
  9. 谷歌21亿美元收购Fitbit为不止为对抗苹果
  10. 手机吃鸡语音服务器异常是怎么回事,《绝地求生》新版本里实用功能介绍 卡语音怎么解决...