SQL分組查詢最大值
本問題旨在從表中提取特定數據,目標是為每個唯一的「Name」欄位找到具有最高「Total」值的記錄。 這與尋找每個組別的最後一筆記錄的問題有所不同。
以下是兩種實現此目標的SQL查詢方法:
方法一:子查詢
<code class="language-sql">SELECT Name, Top, Total FROM sometable WHERE Total = ( SELECT MAX(Total) FROM sometable i WHERE i.Name = sometable.Name );</code>
此查詢使用子查詢來尋找每個Name
群組中的最大Total
值,然後只選擇與該最大值相符的記錄。
方法二:自連接
<code class="language-sql">SELECT Name, Top, Total FROM sometable INNER JOIN ( SELECT MAX(Total) AS Total, Name FROM sometable GROUP BY Name ) AS max ON max.Name = sometable.Name AND max.Total = sometable.Total;</code>
此查詢使用INNER JOIN
將sometable
與一個子查詢連接,該子查詢為每個Name
組計算最大Total
值。 INNER JOIN
條件確保只選擇Total
值與每組的最大值相符的記錄。
兩種方法都能得到相同的結果:
Name | Top | Total |
---|---|---|
cat | 3 | 20 |
horse | 4 | 4 |
dog | 6 | 9 |
以上是如何在 SQL 中找到每個名稱組的最大總數?的詳細內容。更多資訊請關注PHP中文網其他相關文章!