我正在尝试根据一些条件使用计算来更新列。
我使用的理论如下: 如果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
答案 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%'