如何从 Postgresql 中的计算列中获取平均值?
Posted
技术标签:
【中文标题】如何从 Postgresql 中的计算列中获取平均值?【英文标题】:How to get the average from computed columns in Postgresql? 【发布时间】:2021-03-09 06:15:24 【问题描述】:我有一个问题:
SELECT sum(column_1),
sum(...) as sum_1,
sum(...) as sum_2,
sum(...) as sum_3
FROM table_1
如何从 sum_1、sum_2、sum_3 中获取平均数据? 如果我用下一种方式写一个查询:
SELECT sum(column_1),
sum(...) as sum_1,
sum(...) as sum_2,
sum(...) as sum_3,
avg(sum_1, sum_2, sum_3)
FROM table_1
我遇到了一个错误:
[42703] 错误:列“sum_1”不存在
【问题讨论】:
【参考方案1】:您似乎想计算同一行中三列的平均值。如果是这样,您不需要avg()
(这是一个聚合函数,跨行操作)。相反,您可以使用常规算法:
SELECT *, (sum_1 + sum_2 + sum_3) / 3 as sum_average
FROM (
SELECT sum(column_1), sum(...) as sum_1, sum(...) as sum_2,sum(...) as sum_3
FROM table_1
) t
子查询不是必需的。你也可以重复sum()
s,比如:
SELECT sum(column_1), sum(...) as sum_1, sum(...) as sum_2,sum(...) as sum_3,
(sum(...) + sum(...) + sum(...)) / 3 as sum_average
FROM table_1
【讨论】:
非常感谢。哪个查询会更快?以上是关于如何从 Postgresql 中的计算列中获取平均值?的主要内容,如果未能解决你的问题,请参考以下文章
如何从 postgresql 9.4 中的数组列中选择前几位