如何从 Postgresql 中的计算列中获取平均值?

How to get the average from computed columns in Postgresql?

我有一个问题:

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] ERROR: column "sum_1" does not exist

您似乎想要计算同一行上三列的平均值。如果是这样,则不需要 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(),例如:

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