我试图根据一行中的另一个值获取列中的最大值。
我有以下代码:
views.py
我收到以下错误:关键字“group”附近的语法不正确。
对于kultivar2中的每个值,我想要列persentklaarkultivar2中的maksimum值。
非常感谢任何帮助。
此致
答案 0 :(得分:1)
如果kultivar2
的值超过值,则子查询会生成错误。 group by
会为每个kultivar2
返回一行。
虽然您可以使用相关子查询来解决问题(请参阅答案结束),但我喜欢使用可更新的CTE和窗口函数来执行此操作:
with toupdate as (
select r.*,
max(persentklaarkultivar2) over (partition by kultivar2) as maxval
from LeweringVsSkattingResultaat r
)
update toupdate
set maks = maxval;
我应该注意到,使用窗口函数,您可以随时计算最大值,因此无需存储它。窗口函数已经过优化,因此可以利用LeweringVsSkattingResultaat(kultivar2, persentklaarkultivar2)
上的索引。
这可能是一种更好的方法。当从表中插入,更新或删除行时,您不必弄清楚如何使maks
值保持最新。
相关子查询看起来像:
UPDATE r
SET maks = (SELECT max(r2.persentklaarkultivar2)
FROM LeweringVsSkattingResultaat r2
WHERE r2.kultivar2 = r.kultivar2
)
FROM LeweringVsSkattingResultaat r;
答案 1 :(得分:0)
删除()
UPDATE LeweringVsSkattingResultaat
SET maks = ( SELECT max(persentklaarkultivar2) FROM
LeweringVsSkattingResultaat
group by kultivar2)
否则你的小组是在内部选择