在 SQL 中高效查找最大值和关联数据
数据分析师经常需要从表中的列中提取最高值以及从其他列中提取相关数据。 对于大型数据集,效率至关重要。 虽然按 ID 分组并选择最大版本可能看起来很简单,但这种方法忽略了关联的标签。
一种更高级、更高效的方法是利用 ROW_NUMBER()
函数。 考虑这个查询:
<code class="language-sql">SELECT s.id, s.tag, s.version FROM ( SELECT t.*, ROW_NUMBER() OVER(PARTITION BY t.id ORDER BY t.version DESC) as rnk FROM YourTable t ) s WHERE s.rnk = 1;</code>
此查询使用 ROW_NUMBER()
根据 id
列为组(分区)内的每一行分配排名。 PARTITION BY t.id
确保每个唯一 ID 的独立排名。 ORDER BY t.version DESC
按版本降序对行进行排名,为每个 ID 具有最大版本的行分配排名 1。
外部 WHERE
子句过滤结果,仅保留排名为 1 的行。这可以有效地检索唯一 ID、其相应的标签以及每个 ID 的最大版本。 ROW_NUMBER()
函数是有效处理大型数据集的关键。
以上是如何在SQL中高效检索最大列值及对应数据?的详细内容。更多信息请关注PHP中文网其他相关文章!