ホームページ >データベース >mysql チュートリアル >SQLで一意の「名前」ごとに最大の「合計」値を取得するにはどうすればよいですか?

SQLで一意の「名前」ごとに最大の「合計」値を取得するにはどうすればよいですか?

Susan Sarandon
Susan Sarandonオリジナル
2025-01-07 21:20:41488ブラウズ

How to Retrieve the Maximum

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。