为什么严格意义上一定要把查询的字段写在GROUP BY子句中。

[码仔的后端日记]解决PostgreSQL分组聚合时SELECT中字段必须在group或聚合函数中的问题 然后用窗口函数去算我需要聚合的数据,这里直接写上关键字OVER放在avg(score)后面, 然后括号里跟上一个PARTITION BY name, 意思就是按照name去分组,把结果计算出来。其实有一种很简单的方法, 那就是你反正其他的字段其实都一样,随便取一个就行,所以还是保持原来的GROUP BY 子句,然后直接给 == 所有的字段全部加上一个 max() == 函数就行了。好,那我就直接给它安排一个 dictinct 函数,指定我 PARTITION BY 的那个字段,也就是name。 阅读详情

一、问题提出

当我以以往写SQL语句的思路在AWS Athena写时,提示以下错误信息:
在这里插入图片描述
意思就是要求把查询的字段写到GROUP BY字句中。

二、原因

versionevents
1.0eat
1.0drink
1.0sit

假设你想去重version,但此时,如表中version 1.0有三个,对应的events值都不同。那它该保留哪一个呢?

所以严格意义上来说,会要求把events也写到GROUP BY中,这样三个都会被保留下来,就不存在模糊性数据缺失了。

其它字段也是如此,如:

versioneventsparams
1.0eat100
1.0eat200
1.0sit100
1.0drink100

同理,1.0-eat对应两个不同的params,如果不把params写到GROUP BY,那就不知道该保留哪一个。

但非严格意义,比如MySQL。就默认只保留第一行数据。
如上表查询语句:

select * from table group by version;

结果:

versioneventsparams
1.0eat100
Mysql ONLY_FULL_GROUP_BY模式详解、group by非查询字段报错 是MySQL的一个SQL模式(SQL_MODE)之一,它要求在使用GROUP BY语句时,SELECT列表、HAVING条件或ORDER BY列表中的每个列,要么是聚合函数的一部分(如COUNT()SUM()AVG()等),要么必须在GROUP BY子句中明确指定。这一模式的设计初衷是增强查询的准确性和可预测性,避免因为列的不明确引用而导致的数据错误或不一致。 阅读详情

相关推荐

MySQL查询列必须和group by字段一致吗?

目录 场景:查询各部门薪水最高的员工。 MySQL group by是如何决定哪一条数据留下的? 那么target list和group by column不匹配就一定不能执行吗? MySQL版本:8.0.27 场景:查询各部门薪水最高的员工。 CREATE TABLE `employee` ( `id` int NOT NULL AUTO_INCREMENT COMMENT '主键ID', `dept` int NOT NULL COMMENT '部门', `user` var

qq3164069700的博客 1237

group by能够查询的字段

分组组名不仅仅是group by的字段,还可以是各种分组字段的标量函数,比如concat(),data_format(),什么都可以,但只能用分组后的字段。这样看应该比较明显,在group by筛选后,字段只有creator与total_premium了,因此select中只能携带这两个字段。只能是这三种的一个或者多个的组合,否则报错。(分组后的每组只会有一行数据,故只能对每组的数据由多到一的转变)准确说上面这段代码,重新根据执行顺序翻译一下应该如下。

qq_40772429的博客 2265

计算机网络实验——入侵检测系统实验

在图1所示的网络结构中,此方案的具体实施:在路由器Router1的接口1出方向配置入侵检测策略,在收到ICMP ECHO请求包时,丢弃并同步向日志服务器报告警告,此时,终端PC2和PC3无法对终端PC0和PC1执行ping操作,并且日志服务器将记录相应的警告信息;在实验一的基础上,添加扩展分组过滤器,指定需要进行检测的信息流的类别,将扩展分组和对应的入侵检测规则进行绑定,使得只对特定的信息流进行入侵检测。加载指定类别的特征库,这里的指定类别是 ios_ips 类别中的 basic 子类别。

放放的博客 1563

postgresql报错:必须出现在 GROUP BY 子句中或者在聚合函数中使用

报错信息:Cause: org.postgresql.util.PSQLException: 错误: 字段 "s.re_scan_dt" 必须出现在 GROUP BY 子句中或者在聚合函数中使用 以下是报错sql: select count(1) from t_task_his t left join t_scan_record_his s on t.ts_id = s.ts_id and t.ts_item_code = s.ts_item_code and...

qq3892997的博客 9218

Windows环境下DataEase一站式安装指南(含WSL2+Docker配置)

本文详细介绍了在Windows环境下通过WSL2和Docker快速部署DataEase的完整教程。从WSL2配置、Docker环境搭建到DataEase离线安装,逐步指导用户完成一站式部署,特别适合需要快速搭建数据分析平台的开发者。教程包含常见问题解决方案和性能优化技巧,帮助用户高效使用这款国产开源数据可视化工具。

weixin_42526166的博客 397

CTF逆向-[GWCTF 2019]babyvm-WP-虚机模拟流程反向编码和z3约束求解器解方程工具的使用

CTF逆向-[GWCTF 2019]babyvm-WP-虚机模拟流程反向编码和z3约束求解器解方程工具的使用 来源:https://buuoj.cn/ 内容: 附件:https://pan.baidu.com/s/1FKkXN6JDI0QkGw-UE2crNA?pwd=grb0 提取码:grb0 答案:Y0u_hav3_r3v3rs3_1t! 总体思路 发现是虚机模拟 形成每个指令的逆向 找到加密值位置(有可能不止一个位置,该题就给了一个误导的) 找到命令执行的流程(也是不止一个) 逆向编写反向加密得到f

serfend's blog 977

人大金仓适配mysql和oracle函数适配

人大金仓适配mysql和oracle函数适配和迁移方案

aa473947751的博客 4897

智能织梦:基于Rokid AR眼镜的家庭情感记忆增强系统设计与实践

本文介绍了基于Rokid AR眼镜的'智能织梦'系统,通过增强现实技术捕捉和重现家庭情感记忆。系统利用多模态传感器和轻量级情感识别模型,自动记录家庭互动中的情感峰值时刻,并生成沉浸式记忆片段。测试数据显示,该系统显著提升了家庭情感互动的频率和质量,特别适用于多代同堂家庭和记忆唤醒场景。

sre5engineer的博客 536

分组查询时,select的字段是否一定要都在group by中?

分组查询关键字group by通常和集合函数(MAX、MIN、COUNT、SUM、AVG)一起使用,它可以对一列或者多列结果集进行分组。例如要统计超市水果的种类,需要用count...

qq_24432315的博客 2万+

最优化理论与自动驾驶(三):LQR原理、公式及代码演示

LQR 是基于线性系统和二次型代价函数的最优控制方法,在实际工程应用中,我们一般采用离散时间系统的LQR设计,其目标是通过设计反馈控制律,使系统在离散时间步长内稳定运行,最小化某个二次型代价函数。给定一个离散时间系统,其状态和控制输入通过以下方程表示:是时刻k的系统状态,是时刻k的控制输入,是状态转移矩阵,是输入矩阵。系统描述的物理意义:系统状态通过矩阵A演变到下一时刻,同时控制输入通过矩阵B影响系统的状态。

a8598671的博客 4595

Allegro172版本如何在联机模式下使用skill文件操作指导

注意:如果下次重新开启Symphony模式的时候可能导致symphony_skill中的文件内容被清空,所以最好将自己常用的skill文件都写到symphony_skill.txt中去,然后做好备份,需要的时候,在开启软件后把文件放到env目录中去。在用Allegeo172版本进行PCB设计的时候,有时会用到Symphony模式进行多人实时在线协同设计,如下图。这个模式设计起来可以提升设计速度,但是也有一个缺陷,就是不能使用skill文件。如下图,当调用skill的时候就会出现如下报错。

weixin_54787054的博客 1586

MySQL不需要group by的字段查询,避免报错only_full_group_by的方法

对于不需要聚合的字段有没有办法查询出来呢比如很多人一上来就select * from XXX group by XX;或者加了聚合函数又想查多的字段基本上就会报错对于 GROUP BY 聚合操作,如果在 SELECT 中的列,没有在 GROUP BY 中出现,那么这个 SQL 是不合法的遇到这个问题挺常见的,因为在 MySQL 5.7 版本中,,这也导致很多代码在本地跑得好好的,一上线就报错可以查询一下你的结果可能跟我不一样,比较长,但肯定包含了ONLY_FULL_GROUP_BY吧。

无知是恶 5155

一文读懂 SAP ERP / SAP S/4HANA 里的 Price List:概念、配置、定价流程与可运行 ABAP 示例

SAP ERP/S4HANA中的Price List解析 本文系统阐述了SAP定价体系中Price List的核心概念和实现机制。Price List并非独立的价目表,而是通过条件技术(条件类型、访问序列、条件记录)与Price List Type(PLTYP)共同作用的定价维度。文章详细说明了: Price List本质上是客户主数据中的PLTYP字段,作为定价查找键使用 定价流程中条件访问序列如何利用PLTYP查找特定价格 S4HANA与ECC版本在价格维护入口的差异 实际业务中如何通过不同PLTYP实

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 660
上一篇: SQL中复杂结构体解析取值和对常用复杂函数的解释
下一篇: SpringBoot+Mybatis-Plus实现多数据源使
Senye_ing
博客等级 码龄8年 24粉丝 21原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Senye_ing

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值