SQL グループクエリの最大値
この質問は、一意の「名前」フィールドごとに「合計」値が最も高いレコードを見つけることを目的として、テーブルから特定のデータを抽出するように設計されています。 これは、各グループの最後のレコードを見つける問題とは異なります。
この目標を達成するための 2 つの SQL クエリ方法を次に示します。
方法 1: サブクエリ
<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
値を検索し、その最大値に一致するレコードのみを選択します。
方法 2: 自己接続
<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 中国語 Web サイトの他の関連記事を参照してください。