Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Partição Oracle por palavra-chave


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.