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
更多推荐
已为社区贡献2条内容
所有评论(0)