SQL: PARTITION BY と GROUP BY の違い 質問する

SQL: PARTITION BY と GROUP BY の違い 質問する

私は長年にわたり、GROUP BYあらゆる種類の集計クエリに を使用しています。最近、PARTITION BY集計を実行するために を使用するコードをリバース エンジニアリングしています。

について私が見つけられるすべてのドキュメントを読んでみるとPARTITION BY、 に非常に似ているように思えますがGROUP BY、おそらく少し余分な機能が加えられているのでしょう。

これらは同じ一般的な機能の 2 つのバージョンですか、それともまったく異なるものですか?

ベストアンサー1

これらはさまざまな場所で使用されます。GROUP BY次のようにクエリ全体を変更します。

select customerId, count(*) as orderCount
from Orders
group by customerId

しかしPARTITION BYウィンドウ関数、 のようにROW_NUMBER():

select row_number() over (partition by customerId order by orderId)
    as OrderNumberForThisCustomer
from Orders
  • GROUP BY通常、行をロールアップして各行の平均または合計を計算することで、返される行の数を減らします。
  • PARTITION BY返される行数には影響しませんが、ウィンドウ関数の結果の計算方法は変わります。

おすすめ記事