我有一个简单的查询,我正在使用它来尝试理解 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 个结果吗?我在另一张桌子上试过这个,它工作正常但在另一张桌子上它不起作用。
我正在使用 mt.version 的最大值并按 mt.version 对其进行分区,所以我没有获得任何新数据。我之前写的正确版本可能是:
select *, max(mt.version) over (partition by mt.partitiongroup)
from mytable mt
where mt.id = 'some uuid';
在尝试这个新概念时,我没有意识到分区组必须不同于最大聚合。