Postgresql聚合报错:column XXX must appear in the GROUP BY clause or be used in an aggregate function

Posted 尚墨1111

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Postgresql聚合报错:column XXX must appear in the GROUP BY clause or be used in an aggregate function相关的知识,希望对你有一定的参考价值。

postgresql聚合报错

1 参考文章

一篇文章写的很清晰,可参考:https://zhuanlan.zhihu.com/p/457341706

2 原因分析:

聚合的本意是得到一个集合的某些属性值:最大值、最小值、平均值、总和。。。。
这些属性都是原来列经过计算得出的新数据,当我们直接引用未处理的原表数据时就会有问题

3 解决

3.1 例如:

求3个人花费的聚合

user_namecost
tom23
jessy12
tom3

3.2 查询语句

select 
	user_name,
	cost,
from t_cost
group by user_name

error:column cost must appear in the GROUP BY clause or be used in an aggregate function

3.3 原因分析:

此时这个core代表啥意思?哪个cost?用来理解聚合就有问题
除非说:总花费、平均花费、最大花费、最小花费。。。这类统计数据,这样逻辑就没有问题了

3.4 解决:

# 聚合求平均值
select 
	user_name,
	avg(cost),
from t_cost
group by user_name

# 聚合求总和
select 
	user_name,
	sum(cost),
from t_cost
group by user_name

# 聚合求最大值
select 
	user_name,
	max(cost),
from t_cost
group by user_name

以上是关于Postgresql聚合报错:column XXX must appear in the GROUP BY clause or be used in an aggregate function的主要内容,如果未能解决你的问题,请参考以下文章

170PostgreSQL 10字段类型从字符串修改成整型,报错column cannot be cast automatically to type integer

170PostgreSQL 10字段类型从字符串修改成整型,报错column cannot be cast automatically to type integer

mybatis报错Error attempting to get column ‘id‘ from result set. Cause: org.postgresql.util.PSQLExcept

javaweb报错:Data truncation: Data too long for column ‘xxx‘ at row 1

javaweb报错:Data truncation: Data too long for column ‘xxx‘ at row 1

postgreSQL使用sql归一化数据表的某列,以及出现“字段 ‘xxx’ 必须出现在 GROUP BY 子句中或者在聚合函数中”错误的可能原因之一