MySQL テーブルから上位 N 個の最大値を選択するには?

DDD
リリース: 2024-11-10 01:20:02
オリジナル
769 人が閲覧しました

How to Select the Top N Maximum Values from a MySQL Table?

MySQL テーブルから上位 n 個の最大値を選択する

SQL データベースを扱う場合、多くの場合、テーブルから上位 n 個の最大値を取得する必要があります。これは、最も頻繁に発生するカテゴリや最もパフォーマンスの高い製品を見つける場合に特に役立ちます。

MySQL では、テーブルから最大値を選択する基本的なアプローチは、列をグループ化し、各列内の最大値を特定することです。グループ。ただし、上位 n 個の最大値を選択するには、別のアプローチが必要です。

テーブルから上位 n 個の最大値を選択する 1 つの方法は、2 つの UNION クエリを組み合わせることです。最初のクエリは各グループの最大値を特定し、2 番目のクエリは、最初に特定された最大値を除いて、各グループの次に高い値を選択します。

SELECT max(column1) m
FROM table t
GROUP BY column2
UNION
SELECT max(column1) m
FROM table t
WHERE column1 NOT IN (SELECT max(column1)
                      WHERE column2 = t.column2)
ログイン後にコピー

このアプローチは、任意の数の値を取得するようにカスタマイズできます。 2 番目のクエリの LIMIT 句を調整して、上位の最大値を調整します。たとえば、上位 2 つの最大値を選択するには、LIMIT 句は "LIMIT 2,1" になります。

MySQL テーブルから上位 n つの最大値を選択する別の方法には、パーティション上のランクのシミュレーションが含まれます。この手法には、グループ内の各値にランクを割り当てる複雑なサブクエリが含まれます。その後、結果をフィルタリングして上位 n 個の値を取得できます。

このアプローチを使用するクエリの例を次に示します。

SELECT t.*
FROM
   (SELECT grouper,
          (SELECT val
           FROM table li
           WHERE li.grouper = dlo.grouper
           ORDER BY
                 li.grouper, li.val DESC
           LIMIT 2,1) AS mid
   FROM
      (
      SELECT DISTINCT grouper
      FROM table
      ) dlo
   ) lo, table t
WHERE t.grouper = lo.grouper
      AND t.val > lo.mid
ログイン後にコピー

この手法は少し複雑ですが、使用できます。テーブル内の任意の列の上位 n 個の最大値を選択します。

これらのアプローチのいずれかを実装する場合、データの分布と必要な上位最大値の数を考慮することが重要です。多数の上位最大値を選択すると、大規模なデータセットのパフォーマンスに大きな影響を与える可能性があります。

以上がMySQL テーブルから上位 N 個の最大値を選択するには?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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