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

标签 sql max partition-by

我有一个简单的查询,用于尝试理解 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/

相关文章:

javascript - 从 JSON 获取最大值(value)并显示相关数据 (API/Javascript)

Solr - 如何获得最低价格的文档

scala - 指定的分区列与表格的分区列不匹配。请使用()作为分区列

php - 如何根据两个表中的字段对结果集进行排序

java - Entitymanager java 查询中 '||' (concat) 的等价物是什么?

java - 在Java中获取最大值sql

MySQL 查询更新除最新行之外的所有 "duplicate"行

sql - 无法使用只读用户登录 SQL Azure 数据库

mysql - 仅当字段已填充且与其他字段值相同时才计数

sql row_number() 与 select row_number() 获取数据