PARTITION BY клаузата задава диапазона от записи, които ще се използват за всяка "GROUP" в рамките на OVER клауза.
Във вашия примерен 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 за повече подробности.