我正在尝试根据列1和列之间发生的计算来更新列3。该理论相对简单,但是我似乎正在与CTE的斗争。如果列1不是零,则将Column1 * AVG(列2(放入第3栏中。
我搜索了论坛,并尝试了一些不同的方法,包括CTE和标准更新查询。我似乎是犯了一个错误。
WITH cte_avg1 AS (
SELECT "column1" * AVG("column2") AS avg
FROM table1
)
UPDATE table1
SET "column3" = cte_avg1.avg
FROM cte_avg1
WHERE "column1" IS NOT NULL;
我收到的错误消息如下;
错误:列必须通过子句出现在组中或用于聚合函数 第5行:选择" column1" * avg(" column2" ...
在汇总查询中,SELECT
之后的所有列必须在GROUP BY
子句中,或者是聚集函数的参数。将乘法移出CTE。
WITH cte_avg1
AS
(
SELECT avg(column2) avg
FROM table1
)
UPDATE table1
SET column3 = column1 * cte_avg1.avg
FROM cte_avg1
WHERE column1 IS NOT NULL;