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

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

DDD
DDDオリジナル
2025-01-06 06:30:39563ブラウズ

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

SQL の PARTITION BY と GROUP BY の違いを理解する

パーティション化とグループ化は、データの集計と処理のための SQL の重要な操作です。 PARTITION BY と GROUP BY はどちらもデータの分割と集計を伴いますが、機能と用途が大きく異なります。

PARTITION BY: ウィンドウ関数の分割

PARTITION BY は主に、定義されたパーティションに基づいて計算を実行する ROW_NUMBER() などのウィンドウ関数と組み合わせて使用​​されます。パーティション キーと呼ばれる、指定された列に基づいてデータを個別のグループに分割します。各パーティションは独立して動作するため、ウィンドウ関数はそれぞれのパーティションに関連する値を計算できます。

たとえば、次のクエリでは PARTITION BY を使用して、各顧客 ID 内の行に連続番号を割り当てます。

SELECT ROW_NUMBER() OVER (PARTITION BY customerId ORDER BY orderId) AS OrderNumberForThisCustomer
FROM Orders;

GROUP BY: データをグループに集約

GROUP BY、一方、 は、共通の値に基づいて複数の行にわたるデータを集計するように設計されています。これは、グループ化キーと呼ばれる、指定された列内の値が一致する行をグループ化します。次に、COUNT(*) や SUM() などの集計関数が各グループに適用されます。

次のクエリは、GROUP BY を使用して各顧客の合計注文数を計算します。

SELECT customerId, COUNT(*) AS orderCount
FROM Orders
GROUP BY customerId;

主な違い

PARTITION BY と PARTITION BY の主な違いGROUP BY は次のように要約できます:

  • 目的: PARTITION BY はウィンドウ関数のデータを分割し、GROUP BY はデータをグループに集約します。
  • 結果への影響: PARTITION BY は返される行の数を減らしませんが、GROUP は返されます。 BY は通常、グループ化と集計によって行数を減らします。
  • ウィンドウ関数: PARTITION BY はウィンドウ関数と互換性があり、パーティション内での計算が可能です。 GROUP BY はウィンドウ関数をサポートしません。
  • 柔軟性: PARTITION BY では複数の列に基づいた柔軟なパーティショニングが可能ですが、GROUP BY は指定された列に基づいたグループ化に限定されます。

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

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