我有一个简单的查询,我正在尝试理解SQL max()over()功能,如下所示:
select *, max(mt.version) over (partition by mt.version)
from myTable mt
where mt.id = 'some uuid';
编辑: 这个概念对我来说是新的,所以我不确定它应该做什么。我没有特定的数据集,我只是想通过提出我自己的例子来了解代码的作用。
我不明白的是我的数据集有多行。我认为max()over(partition by x)功能应该返回基于max函数的单个结果。有人请解释为什么我会得到超过1的结果。我在另一张桌子上尝试了这个并且它工作正常但在另一张桌子上它不起作用。
答案 0 :(得分:1)
我正在使用mt.version的最大值并通过mt.version对其进行分区,因此我没有获得任何新数据。我之前写的正确版本可能是:
select *, max(mt.version) over (partition by mt.partitiongroup)
from mytable mt
where mt.id = 'some uuid';
我在尝试这个新概念时没有意识到分区组必须与最大聚合不同。