【问题标题】:How to get the average from computed columns in Postgresql?如何从 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”不存在

【问题讨论】:

    标签: sql postgresql sum average aggregate-functions


    【解决方案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
    

    【讨论】:

    • 非常感谢。哪个查询会更快?
    猜你喜欢
    • 2016-11-14
    • 1970-01-01
    • 2011-03-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-06
    • 2020-09-23
    相关资源
    最近更新 更多