来自组的Postgresql Max
正在尝试将标志添加到每个objectid中的最大BSCMPNSTOTAL。这是薪酬数据,其中objectid表示一个特定的组织,BSCMPNSTOTAL等于给定员工的总薪酬。我想要一个标志,指定每个组织中谁是薪酬最高的人:来自组的Postgresql Max,postgresql,Postgresql,正在尝试将标志添加到每个objectid中的最大BSCMPNSTOTAL。这是薪酬数据,其中objectid表示一个特定的组织,BSCMPNSTOTAL等于给定员工的总薪酬。我想要一个标志,指定每个组织中谁是薪酬最高的人: WITH "return_skdjrltdorgoffcrtrstkyempl" AS ( SELECT *, ROW_NUMBER() OVER (PARTITION BY object_id ORDER BY bscmpn
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”不存在
表结构:
哇,什么名字
问题是您将CTE命名为与表相同的名称(我相信),而表“阴影”是CTE。您会收到错误消息,因为表return\u skdjrltdorgoffcrtrstkyemp
没有名为grouprank
的列
您必须为CTE选择一个不同的名称,并将其与UPDATE
语句中的表连接起来(使用UPDATE…FROM
):
不过,我的建议是不要将这些信息保留在数据库中。如果表数据发生更改,信息不会变得无效吗?只要需要,就从表数据中计算出来。哇,什么名字
问题是您将CTE命名为与表相同的名称(我相信),而表“阴影”是CTE。您会收到错误消息,因为表return\u skdjrltdorgoffcrtrstkyemp
没有名为grouprank
的列
您必须为CTE选择一个不同的名称,并将其与UPDATE
语句中的表连接起来(使用UPDATE…FROM
):
不过,我的建议是不要将这些信息保留在数据库中。如果表数据发生更改,信息不会变得无效吗?根据表格数据随时计算出来。你能发布表格结构吗?@rastik在上面添加,谢谢!你能发布表格结构吗?@rastik在上面添加了,谢谢!这个数据库不会改变,所以我没有问题在它有一个静态标志。是的,名字很不幸。db是给我的,我可能应该更改它们。不过我还是很难理解你的建议。我已经编辑了我在上面尝试的内容。我添加了一些示例代码,希望能更好地解释它。这个数据库不会改变,所以我在其中有一个静态标志没有问题。是的,名字很不幸。db是给我的,我可能应该更改它们。不过我还是很难理解你的建议。我已经编辑了我在上面尝试的内容。我添加了一些示例代码,希望能更好地解释它。
WITH shortname AS (...)
UPDATE ctetable
SET ...
FROM shortname
WHERE shortname.id = ctetable.id;