如何从 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
我有一个问题:
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