首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >来自组的Postgresql Max

来自组的Postgresql Max
EN

Stack Overflow用户
提问于 2018-09-18 19:01:24
回答 1查看 35关注 0票数 0

试图在每个objectid中向最大bscmpnstntotal添加一个标志。这是薪酬数据,objectid表示特定的组织,bscmpnstntotal等于给定员工的总薪酬。我想要一个标志,指定每个组织中谁的薪酬最高:

代码语言:javascript
复制
    WITH "return_skdjrltdorgoffcrtrstkyempl"
AS
(
    SELECT 
        *,
        ROW_NUMBER() OVER (PARTITION BY object_id ORDER BY bscmpnstntotal DESC) AS GroupRank
    FROM ctetable
)
UPDATE "return_skdjrltdorgoffcrtrstkyempl"
SET highestpaidflag2 = CASE WHEN GroupRank = 1 THEN 1 ELSE 0 END;

我所犯的错误是

错误:关系"ctetable“不存在

表结构:

EN

回答 1

Stack Overflow用户

发布于 2018-09-18 19:16:52

哇,什么名字。

问题是,您将CTE命名为与表(我相信)相同,而表“阴影”了CTE。您将得到错误消息,因为表return_skdjrltdorgoffcrtrstkyempl没有名为grouprank的列。

您必须为CTE选择一个不同的名称,并将其与UPDATE语句中的表连接(使用UPDATE ... FROM):

代码语言:javascript
复制
WITH shortname AS (...)
UPDATE ctetable
SET ...
FROM shortname
WHERE shortname.id = ctetable.id;

不过,我的建议是不要将这些信息保存在数据库中。如果表数据发生变化,信息不会变得无效吗?当您需要时,从表数据中计算它。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52393046

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档