postgresql 使用条件更新最大值

x7rlezfr  于 2023-01-17  发布在  PostgreSQL
关注(0)|答案(1)|浏览(167)

我有1号桌
| 坡度|总和|速率|
| - ------|- ------|- ------|
| 第二章|一百九十七||
| 四个|一百八十七||
| 四个|一百五十四||
| 第二章|小行星||
| 五个|九三四||
| 六个|三五四||
| 三个|三百二十五||
| 四个|四○五||
| 四个|一百七十八||
| 三个|九十七||
| 三个|八十一||
| 第二章|一百三十二||
| 三个|四五四||
| 五个|九十||
我试图根据列等级中的标准得到列和的最大值,输出将如下所示;
| 坡度|总和|速率|
| - ------|- ------|- ------|
| 第二章|一百九十七| 一千零二十五人|
| 四个|一百八十七| 四○五|
| 四个|一百五十四| 四○五|
| 第二章|小行星| 一千零二十五人|
| 五个|九三四| 九三四|
| 六个|三五四| 三五四|
| 三个|三百二十五| 四五四|
| 四个|四○五| 四○五|
| 四个|一百七十八| 四○五|
| 三个|九十七| 四五四|
| 三个|八十一| 四五四|
| 第二章|一百三十二| 一千零二十五人|
| 三个|四五四| 四五四|
| 五个|九十| 九三四|
已尝试此操作,但出现错误

update table1 
set rate = (select MAX(sums) OVER(PARTITION BY grade) FROM table1);
mwngjboj

mwngjboj1#

我不确定CTE是否会比@Hieko Jakubzik在评论中的查询更快,但也许吧?在这个查询中,我们找到了所有的最大值,并将它们放在一个临时表(tt)中。

WITH tt as ( SELECT grade, max(sums) AS thisrate
               FROM table1
           GROUP BY grade )

UPDATE table1 t 
   SET rate = thisrate
  FROM tt
 WHERE t.grade = tt.grade

相关问题