我有一个简单的查询,用于尝试理解 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 个结果吗?我在另一张 table 上尝试过,它工作正常,但在另一张 table 上它不起作用。
最佳答案
我采用了 mt.version 的最大值并按 mt.version 对其进行分区,因此我没有获得任何新数据。我之前写的正确版本可能是:
select *, max(mt.version) over (partition by mt.partitiongroup)
from mytable mt
where mt.id = 'some uuid';
在尝试这个新概念时,我没有意识到分区组必须与最大聚合不同。
关于SQL max() over(partition) 返回多个结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17935357/