多个 SELECT 后跟多个 UPDATE
Multiple SELECT followed by multiple UPDATE
我有两个 table - 第一个 table gas_emissions
,第二个 table - regiony_avg
.
Table gas_emissions
有列 region
、region_id
、data_val
、year
.
Table regiony_avg
有列 region_id
、avg_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;
我有两个 table - 第一个 table gas_emissions
,第二个 table - regiony_avg
.
Table gas_emissions
有列 region
、region_id
、data_val
、year
.
Table regiony_avg
有列 region_id
、avg_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;