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_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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值