私は長年にわたり、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
返される行数には影響しませんが、ウィンドウ関数の結果の計算方法は変わります。