如何修复“错误:更新中不允许使用聚合函数”

H_E*_*pty 6 postgresql

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

我使用的理论如下;如果 column1 包含“string”,则“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;
Run Code Online (Sandbox Code Playgroud)

我得到的错误如下;

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

小智 10

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

    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%'
Run Code Online (Sandbox Code Playgroud)