【问题标题】:How to fix "ERROR: aggregate functions are not allowed in UPDATE"如何修复“错误:UPDATE 中不允许聚合函数”
【发布时间】:2019-06-19 23:14:44
【问题描述】:

我正在尝试使用计算根据几个条件更新列。

我使用的理论如下; 如果 column1 包含“字符串”,则将“计算 column2 和 column3”放入 column4。

计算有效,但我正在努力寻找一种方法来使用这些 IF 条件和 SUM 来更新列。

我已经搜索了堆栈和 postgres 文档。我看到有许多聚合错误,但没有一个专门解决这个问题。

UPDATE table1
SET "column4" = CASE
        WHEN "column1" ILIKE '%Y%' THEN SUM(CAST("column2" AS 
                numeric(4,2))) / SUM(CAST("column3" AS numeric(4,2)))
        END;

我得到的错误如下;

错误:UPDATE 中不允许使用聚合函数 第 7 行:当 "column1" ILIKE '%Y%' THEN (SUM(CAST("...

【问题讨论】:

    标签: postgresql


    【解决方案1】:

    在公用表表达式中进行计算:

        WITH cte_avg AS (
            SELECT SUM(CAST("column2" AS numeric(4,2))) / SUM(CAST("column3" AS numeric(4,2))) AS avg
            FROM table1
        )
        UPDATE table1
        SET "column4" = cte_avg.avg
        FROM cte_avg
        WHERE "column1" LIKE '%Y%'
    

    【讨论】:

    • 谢谢,这达到了我想要的结果!
    猜你喜欢
    • 1970-01-01
    • 2020-04-09
    • 2020-07-14
    • 2014-01-26
    • 2021-05-06
    • 2020-11-04
    • 2017-06-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多