ホームページ > データベース > mysql チュートリアル > SQLで各グループの最大レコードを見つける方法は?

SQLで各グループの最大レコードを見つける方法は?

Mary-Kate Olsen
リリース: 2025-01-07 21:47:41
オリジナル
217 人が閲覧しました

How to Find the Maximum Record for Each Group in SQL?

SQL でグループごとに最大のレコードを検索

データベース管理では、多くの場合、各データ グループ内の最大のレコードを取得する必要があります。次のシナリオを考えてみましょう。

質問:

「Name」、「Top」、「Total」という 3 つのフィールドと次のデータを含むテーブルがあります。

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

解決策:

グループごとの最大レコードを取得するには、次のクエリを使用できます:

<code class="language-sql">select
  Name, Top, Total
from
  sometable
where
  Total = (select max(Total) from sometable i where i.Name = sometable.Name)</code>
ログイン後にコピー

このクエリは、各レコードの「合計」値を、同じ「名前」グループ内の最大の「合計」値と比較します。次に、「合計」値が一致するレコードを選択します。

また、サブクエリを使用して同じ結果を得ることができます。

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

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート