【问题标题】:Postgresql update a column with cumulative sumPostgresql 用累积和更新一列
【发布时间】:2021-03-13 17:04:54
【问题描述】:

您能帮忙处理一下 postgresql 查询吗?我有一个表'company_abc'。它有 2 个主键(id,year),第 3 列是数值,第 4 列应填写每年第 3 列值的累积总和。我尝试了以下方法:

update company_abc 
set srti = ww.srti
    from (SELECT sum(company_abc.salestotal) over (partition by year order by salestotal desc) as stri) ww;

也试过了:

update company_abc 
set (cid, year, srti) = (SELECT company_abc.cid, company_abc.year, sum(company_abc.salestotal) over (partition by year order by salestotal DESC)
    FROM company_abc
    ORDER  BY year desc);

在这两种情况下,它都失败了。请帮忙!

【问题讨论】:

    标签: sql postgresql sum sql-update inner-join


    【解决方案1】:

    你似乎想要一个 update 和一个 self-join

    update company_abc c
    set stri = c1.stri
    from (
        select id, year, 
            sum(salestotal) over(partition by year order by salestotal desc) stri
        from company_abc
    ) c1
    where c1.id = c.year and c1.id = c.id
    

    子查询计算窗口总和(使用与原始代码中相同的表达式),然后我们使用表的主键来更新表中相应行的值。

    【讨论】:

    • 非常感谢!我花了大半天的时间,你几秒钟就搞定了!)))
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-03-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-15
    • 1970-01-01
    相关资源
    最近更新 更多