PostgreSQL更新表,其中包含来自另一个表的平均值

时间:2018-04-20 20:41:26

标签: postgresql

我尝试了这三种不同的方式,而PostgreSQL仍然不喜欢我的状态" UPDATE"中不允许使用聚合函数。如果不这样做,我不知道如何做到这一点。有人能指出我正确的方向,用我的平均工资来填充我的平均工资领域吗?

尝试1:

UPDATE public."JobCategory"
    SET "AverageWage" = round(avg("Wage"), 4)
FROM public."Employees" WERE "Wage" > 0

尝试2:

UPDATE public."JobCategory" c
INNER JOIN (
  SELECT round(avg("Wage"), 4) as average
  FROM public."Employees"
) x ON c."Index" = x."JobIndex"
SET c."AverageWage" = x.average

尝试3:

UPDATE public."JobCategory" AS v 
SET "AverageWage" = s.round(avg("Wage"), 4)
FROM public."Employees" AS s
WHERE v."Index" = s."JobIndex"

1 个答案:

答案 0 :(得分:1)

您可以使用子查询执行此操作:

WITH subq AS (
    SELECT round(avg(Wage), 4) as average
    FROM public.Employees
)
UPDATE public.JobCategory jc
SET AverageWage = subq.average
FROM subq