A
PARTITION BY cláusula define o intervalo de registros que serão usados para cada "GROUP" dentro do OVER cláusula. No seu exemplo SQL,
DEPT_COUNT retornará o número de funcionários desse departamento para cada registro de funcionário. (É como se você estivesse desnomalizando o emp tabela; você ainda retorna todos os registros no emp tabela.) 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
Se houver outra coluna (por exemplo,
state ), então você poderia contar quantos departamentos naquele Estado. É como obter os resultados de um
GROUP BY (SUM , AVG , etc.) sem agregar o conjunto de resultados (ou seja, remover registros correspondentes). É útil quando você usa o
LAST OVER ou MIN OVER funções para obter, por exemplo, o salário mais baixo e mais alto do departamento e, em seguida, usar isso em um cálculo contra esse salário de registros sem um sub select, que é muito mais rápido. Leia o artigo do AskTom vinculado para obter mais detalhes.