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

时间:2019-06-19 15:06:23

标签: postgresql

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

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

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

我已经搜索了stack和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”类似'%Y%'时(SUM(CAST(“ ...... p

1 个答案:

答案 0 :(得分:0)

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

    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%'