大型表格分組列中最大值的查找
本例中,您需要從大型表格的每個分組中提取特定列的最大值所在的行,而無需進行低效的多表搜尋。考慮以下表格:
<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中文網其他相關文章!