La PARTITION BY establece el rango de registros que se usarán para cada "GRUPO" dentro del OVER cláusula.
En su SQL de ejemplo, DEPT_COUNT devolverá el número de empleados dentro de ese departamento para cada registro de empleado. (Es como si estuviera desnomalizando el emp mesa; aún devuelve cada registro en el emp mesa.)
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
Si hubiera otra columna (p. ej., state ) entonces podrías contar cuántos departamentos hay en ese estado.
Es como obtener los resultados de un GROUP BY (SUM , AVG , etc.) sin agregar el conjunto de resultados (es decir, eliminar los registros coincidentes).
Es útil cuando usa el LAST OVER o MIN OVER funciones para obtener, por ejemplo, el salario más bajo y más alto en el departamento y luego usarlo en un cálculo contra este salario de registros sin una selección secundaria, que es mucho más rápida.
Lea el artículo de AskTom vinculado para obtener más detalles.