大型表格分组列中最大值的查找
本例中,您需要从大型表格的每个分组中提取特定列的最大值所在的行,而无需进行低效的多表搜索。考虑以下表格:
<code>SCORES ID ROUND SCORE 1 1 3 1 2 6 1 3 2 2 1 10 2 2 12 3 1 6</code>
您的目标是检索每个唯一ID的最新回合以及相应的得分。所需输出如下:
<code>ID ROUND SCORE 1 2 6 2 2 12 3 1 6</code>
使用窗口函数的高效解决方案
一种高效的方法是结合使用窗口函数和DISTINCT关键字:
<code class="language-sql">SELECT DISTINCT id ,MAX(round) OVER (PARTITION BY id) AS round ,FIRST_VALUE(score) OVER (PARTITION BY id ORDER BY round DESC) AS score FROM SCORES WHERE id IN (1,2,3) ORDER BY id;</code>
此查询使用了以下关键概念:
此优化的查询有效地返回每个唯一ID的最新回合和分数,无需多次扫描表格,即使对于大型表格也能保持高效。
以上是如何高效查找大表中每组某列的最大值?的详细内容。更多信息请关注PHP中文网其他相关文章!