SQL max() over(partition) 返回多个结果

问题描述 投票:0回答:1

我有一个简单的查询,我正在使用它来尝试理解 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 个结果吗?我在另一张桌子上试过这个,它工作正常但在另一张桌子上它不起作用。

sql max partition-by
1个回答
2
投票

我正在使用 mt.version 的最大值并按 mt.version 对其进行分区,所以我没有获得任何新数据。我之前写的正确版本可能是:

select *, max(mt.version) over (partition by mt.partitiongroup)
from mytable mt
where mt.id = 'some uuid';

在尝试这个新概念时,我没有意识到分区组必须不同于最大聚合。

© www.soinside.com 2019 - 2024. All rights reserved.