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

1 参考文章

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

2 原因分析:

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

3 解决

3.1 例如:

求3个人花费的聚合

user_name cost
tom 23
jessy 12
tom 3

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

猜你喜欢

转载自blog.csdn.net/qq_42647903/article/details/127979751