PARTITION BY
句は、OVER
内の各「GROUP」に使用されるレコードの範囲を設定します 条項。
SQLの例では、DEPT_COUNT
従業員レコードごとに、その部門内の従業員数を返します。 (これは、emp
の名前を外しているようなものです。 テーブル; emp
のすべてのレコードを引き続き返します 表。)
emp_no dept_no DEPT_COUNT
1 10 3
2 10 3
3 10 3 <- three because there are three "dept_no = 10" records
4 20 2
5 20 2 <- two because there are two "dept_no = 20" records
別の列があった場合(例:state
)次に、その州の部門の数を数えることができます。
これは、GROUP BY
の結果を取得するようなものです。 (SUM
、AVG
、など)結果セットを集約せずに(つまり、一致するレコードを削除します)。
LAST OVER
を使用する場合に便利です またはMIN OVER
たとえば、部門内の最低給与と最高給与を取得し、それをこのレコードの給与に対する計算に使用する関数 サブセレクト。これははるかに高速です。
詳細については、リンクされているAskTomの記事をお読みください。