ホームページ >データベース >mysql チュートリアル >データセット内の各グループから上位 N 人の最年長者を取得するにはどうすればよいですか?

データセット内の各グループから上位 N 人の最年長者を取得するにはどうすればよいですか?

Susan Sarandon
Susan Sarandonオリジナル
2025-01-25 10:06:11573ブラウズ

How to Retrieve the Top N Oldest People from Each Group in a Dataset?

各グループの最古の個人を効率的に選択します

この記事では、データセット内の各グループの最古の個人(この場合は2つ)を取得するための2つの方法を示しています。 最初のアプローチはAUNION ALLアプローチを利用し、2番目はよりスケーラブルなソリューションに行番号を採用します。

メソッド1:ユニオンすべて(少数の固定数のグループに適しています)この方法は、既知の限られた数のグループにとって簡単です。 各グループの最古の最古の個人を個別に選択し、結果を組み合わせます。 ただし、このアプローチは、グループの数が増えるにつれて面倒で非効率的になります。

メソッド2:行番号(大量または未知のグループのスケーラブルなソリューション)

<code class="language-sql">(
  SELECT *
  FROM mytable
  WHERE `group` = 1  -- Group 1
  ORDER BY age DESC
  LIMIT 2
)
UNION ALL
(
  SELECT *
  FROM mytable
  WHERE `group` = 2  -- Group 2
  ORDER BY age DESC
  LIMIT 2
)
-- ... Add more UNION ALL clauses for additional groups</code>

このメソッドは、それぞれのグループ内の各個人に行番号を動的に割り当て、年齢ごとに降順で順序付けます。 これにより、すべてのグループで最も古い個人を効率的に選択できます。 このアプローチは、変数を活用しておよび

をレバレッジして、それぞれ行番号とグループを追跡します。 これらの変数を初期化します。 最終

句は、結果をフィルタリングして、各グループの上位2人の個人のみを含むようにします。 この方法は、多くのグループを持つデータセットの

アプローチよりもはるかに効率的で適応性があります。

以上がデータセット内の各グループから上位 N 人の最年長者を取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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