【问题标题】:Multiple SELECT followed by multiple UPDATE多个 SELECT 后跟多个 UPDATE
【发布时间】:2021-03-30 13:03:40
【问题描述】:

我有两张桌子——第一张桌子gas_emissions,第二张桌子——regiony_avg

gas_emissions 有列regionregion_iddata_valyear

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 中?

【问题讨论】:

    标签: sql sql-server select sql-update average


    【解决方案1】:

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

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

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

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

    【讨论】:

      猜你喜欢
      • 2013-02-17
      • 1970-01-01
      • 2012-11-30
      • 1970-01-01
      • 2011-06-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多