ホームページ >データベース >mysql チュートリアル >データセット内の各グループから上位 N 人の最年長者を取得するにはどうすればよいですか?
各グループの最古の個人を効率的に選択します
この記事では、データセット内の各グループの最古の個人(この場合は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 サイトの他の関連記事を参照してください。