sql >> Base de Datos >  >> RDS >> Oracle

Partición de Oracle por palabra clave

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.