ホームページ > データベース > mysql チュートリアル > PARTITION BY と GROUP BY: SQL クエリの違いは何ですか?

PARTITION BY と GROUP BY: SQL クエリの違いは何ですか?

Mary-Kate Olsen
リリース: 2025-01-06 03:53:42
オリジナル
602 人が閲覧しました

PARTITION BY vs. GROUP BY: What's the Difference in SQL Queries?

クエリのパーティショニング: PARTITION BY と GROUP BY について

データ集計の領域では、データベース クエリは多くの場合 GROUP BY 句に依存します。データを操作および集約するため。最近、代替手法である PARTITION BY が、最適化されたクエリ パフォーマンスを求める開発者の注目を集めています。しかし、これら 2 つの句はどのように異なるのでしょうか?

PARTITION BY は、GROUP BY とは異なり、ROW_NUMBER() などのウィンドウ関数のコンテキスト内で動作します。その主な目的は、特定の基準に基づいてデータをサブセットに分割し、データのセットをスライドするウィンドウと同じように、各サブセット内の値の計算を可能にすることです。

一方、GROUP BY は次の内容を変更します。クエリ全体を処理し、同様の値を持つ行全体のデータを集計できるようにします。返される行を統合し、平均や合計などの集計値を計算することで、返される行の数を減らします。

違いを説明するために、次の例を考えてみましょう。

GROUP BY の使用:

SELECT customerId, COUNT(*) AS orderCount
FROM Orders
GROUP BY customerId;
ログイン後にコピー

このクエリは注文を顧客 ID ごとにグループ化し、それぞれの注文数をカウントします。

PARTITION BY の使用:

SELECT ROW_NUMBER() OVER (PARTITION BY customerId ORDER BY orderId)
    AS OrderNumberForThisCustomer
FROM Orders;
ログイン後にコピー

このクエリは、各顧客パーティション内の各注文の注文番号を計算します。顧客ごとの注文のランキング。返される行の数には影響しません。

要約すると、PARTITION BY と GROUP BY は両方とも異なる目的を果たしますが、データ操作と集計という共通の目標を共有します。 GROUP BY はクエリに対してグローバルに動作し、返される行数を減らしますが、PARTITION BY はウィンドウ関数の範囲内で動作し、行数を変更しません。これらの句の違いを理解することで、開発者はクエリを特定のデータ操作に合わせて調整し、クエリのパフォーマンスを向上させることができます。

以上がPARTITION BY と GROUP BY: SQL クエリの違いは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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