一般的に使用される SQL 構造である GROUP BY は、共通の値に基づいてデータ行をグループ化することを容易にし、集計の評価を可能にします。これらのグループ化された行に対する関数。しかし、データベース操作における PARTITION BY の出現により、これら 2 つの操作の区別について疑問が生じています。
GROUP BY の概要
GROUP BY は、同一のデータ レコードを共有するグループ化します。指定された列の値を個別のグループに集約します。その後、グループごとに後続の集計関数 (SUM()、COUNT() など) が計算されます。 GROUP BY の主な目的は、大規模なデータセットを要約して圧縮することです。
PARTITION BY によるパーティション化
GROUP BY とは異なり、PARTITION BY はウィンドウ関数のコンテキスト内で動作します。これらの関数は、特定の条件によって定義された範囲 (または「ウィンドウ」) 内のデータ行を評価します。 PARTITION BY は、指定された列の値に基づいて、ウィンドウ化されたデータをパーティションに分割します。その後、ウィンドウ関数が各パーティションに個別に適用され、より詳細で微妙な計算が可能になります。
主要な区別
例
順序のテーブルを考えてみましょう:
CustomerID | OrderID |
---|---|
1 | 10 |
1 | 15 |
2 | 20 |
2 | 25 |
グループの使用BY:
SELECT CustomerID, COUNT(*) AS OrderCount FROM Orders GROUP BY CustomerID
出力:
CustomerID | OrderCount |
---|---|
1 | 2 |
2 | 2 |
PARTITION BY の使用:
SELECT ROW_NUMBER() OVER (PARTITION BY CustomerID ORDER BY OrderID) AS OrderNumberForRow FROM Orders
出力:
CustomerID | OrderID | OrderNumberForRow |
---|---|---|
1 | 10 | 1 |
1 | 15 | 2 |
2 | 20 | 1 |
2 | 25 | 2 |
この例では、PARTITION BY は CustomerID によってデータを分離し、各パーティション内で行番号を連続して割り当てます。
要約すると、PARTITION BY はウィンドウ関数の計算にさらなる柔軟性を提供し、より対象を絞った評価のためにデータを分割します。対照的に、GROUP BY は、グローバルな集計と行削減を提供して、簡潔なデータの概要を実現します。これらの操作の違いを理解することは、SQL コードを最適化し、クエリ効率を最大化するために重要です。
以上がGROUP BY と PARTITION BY: SQL の違いは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。