ホームページ >データベース >mysql チュートリアル >SQLで一意の「名前」ごとに最大の「合計」値を取得するにはどうすればよいですか?
SQL ヒント: グループごとに最大値を抽出
データベースクエリでは、多くの場合、テーブル内の異なるグループごとに最大値を抽出する必要があります。この記事では、テーブル内の一意の「名前」ごとに「合計」値が最も高いレコードを選択する方法の問題を解決します。
サンプルテーブルとデータ:
次のサンプルテーブルがあるとします:
Name | Top | Total |
---|---|---|
cat | 1 | 10 |
dog | 2 | 7 |
cat | 3 | 20 |
horse | 4 | 4 |
cat | 5 | 10 |
dog | 6 | 9 |
クエリターゲット:
私たちの目標は、次の結果を抽出することです:
Name | Top | Total |
---|---|---|
cat | 3 | 20 |
horse | 4 | 4 |
dog | 6 | 9 |
解決策:
これは、次の 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>
説明:
このクエリは WHERE 句でサブクエリを使用します。サブクエリは、「名前」に基づいて各グループの「合計」の最大値を見つけます。次に、外側のクエリによってテーブルがフィルタリングされ、「合計」がこの最大値と一致するレコードのみが選択されます。
代替:
内部結合を使用する代わりに:
<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>
結論:
どちらの方法も、個別の「名前」ごとに「合計」の最大値を特定することで、テーブルから必要なレコードを抽出するのに効果的です。これらのクエリはさまざまなデータベース管理システムに適用でき、グループ化されたデータから最大値を抽出するための一般的な方法を提供します。
以上がSQLで一意の「名前」ごとに最大の「合計」値を取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。