多个 SELECT 后跟多个 UPDATE

Multiple SELECT followed by multiple UPDATE

我有两个 table - 第一个 table gas_emissions,第二个 table - regiony_avg.

Table gas_emissions 有列 regionregion_iddata_valyear.

Table regiony_avg 有列 region_idavg_region.

每个地区都有多个值,因为它们每年都会计算一次。我需要计算每个区域的 AVG 并将其插入 regiony_avg.

有10多个地区,我做的是

SELECT AVG(data_val) AS AKL 
FROM gas_emissions 
WHERE region_id = 'AKL'

然后

UPDATE regiony_avg 
SET avg_region = 1999.64771428571 
WHERE region_id = 'AKL'

我为每个地区都做了。但是,如果有例如 1000 个区域,我不知道该怎么做。有什么方法可以获取所有唯一 regions 的 AVG,然后立即将其插入 regiony_avg

我想你只是想要 insert . . . select:

insert into regiony_avg (region_id, avg_region)
    selet region_id, avg(data_val)
    from gas_emissions
    group by region_id;

注意:我认为没有理由将此信息存储在 table 中,因为可以使用聚合查询轻松计算这些信息。事实上,您可以使用 window 函数将平均值添加到原始 table 的每一行:

select ge.*,
       avg(data) over (partition by region_id) as region_avg
from gas_emissions ge;