1. ホーム
  2. sql-server

[解決済み] SQL Server PARTITION BYとGROUP BYの違いについて

2022-03-23 20:08:12

質問

私はこれまで GROUP BY は、長年にわたってあらゆる種類の集計クエリに使用されています。 最近、私は、あるコードで PARTITION BY を使用して集計を行います。 に関するあらゆるドキュメントに目を通したところ PARTITION BY と似ています。 GROUP BY もしかしたら、少し機能が追加されているかもしれませんね? これらは同じ一般的な機能の2つのバージョンなのでしょうか、それとも全く別のものなのでしょうか?

解決方法は?

使う場所が違う 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

A group by 通常、返される行の数は、それらをロールアップして各行の平均や合計を計算することによって減少します。 partition by は返される行数には影響しませんが、 ウィンドウ関数の結果の計算方法を変更します。