Este weblog contiene la función de clasificación de ventana en SQL como (Rank, Dense_Rank, Row_Number, Lead, Lag).
Esto
RANK()
La función calcula un rango para cada fila dentro de una partición de un conjunto de resultados.
La sintaxis de la función de ventana Rank() :-
RANK() OVER (
(PARTITION BY partition_expression, ... )
ORDER BY sort_expression (ASC | DESC), ...
)
- En
PARTITION BY
cláusula, divide las filas de las particiones del conjunto de resultados a las que se aplica la función rank(). - En
ORDER BY
La cláusula especifica si la fila debe clasificarse en orden asc/dec de las filas para cada partición a la que se aplica la función Rank().
Aquí está el ejemplo de Rank()
Estamos aplicando Rank() en la columna de salario: seleccione *, rango () sobre (ordenar por desc de salario) rn de Empleado e;
La función rank() divide la columna de salario en orden descendente.
Ahora estamos aplicando Rank() con Partition by seleccione *, rango () sobre (Partición por orden de nombre por desc de salario) rn de Empleado e
En esta función Rank() se divide en la partición de la columna de nombre con la columna de salario en orden descendente.
Él DENSE_RANK()
La función devuelve valores de rango consecutivos con cada fila en cada partición recibiendo los mismos rangos si tienen los mismos valores.
La sintaxis de la función de ventana Dense_Rank() :-
DENSE_RANK() OVER (
(PARTITION BY partition_expression, ... )
ORDER BY sort_expression (ASC | DESC), ...
)
Estamos aplicando Dense_Rank() en la columna de salario: seleccione *, dense_rank() over (ordenar por descripción salarial) rn from Worker e;
Ahora estamos aplicando Dense_Rank() con Partition by: choose *, dense_rank() over (Partición por orden de nombre por descripción salarial) rn from Worker e
En esta función Dense_Rank() se divide en la partición de la columna de nombre con la columna de salario en orden descendente.
Él ROW_NUMBER()
es una función de ventana easy que da un número de fila entero a la fila correspondiente. El número de fila comienza con 1 para la primera fila de cada partición.
La sintaxis de la función de ventana Row_number() :-
ROW_NUMBER() OVER (
(PARTITION BY partition_expression, ... )
ORDER BY sort_expression (ASC | DESC), ...
)
Estamos aplicando row_number() en la columna de salario: seleccione *, rango () sobre (ordenar por desc de salario) rn de Empleado e;
estamos aplicando row_number() con Partición por: seleccione *, rango () sobre (Partición por orden de nombre por desc de salario) rn de Empleado e;
En esta función Row_Number() se divide en la partición de la columna de nombre con la columna de salario en orden descendente.
LAG()
y LEAD()
son funciones posicionales. Estas son funciones de ventana y son muy útiles para crear informes porque pueden referirse a datos de filas arriba o debajo de la fila precise.
Él LAG()
La función permite el acceso a un valor almacenado en una fila diferente por encima de la fila precise.
Sintaxis de LAG():
LAG(expression (,offset(,default_value))) OVER(ORDER BY columns)
Consulta: SELECCIONE *, LAG(Salario) SOBRE(Partición Por nombre ORDEN POR Salario asc) como valor_venta_anterior DESDE Empleado;
LEAD()
es parecido a LAG()
. Mientras que LAG()
accede a un valor almacenado en una fila arriba, LEAD()
accede a un valor almacenado en una fila a continuación.
Sintaxis de Lead():
LEAD(expression (,offset(,default_value))) OVER(ORDER BY columns)
Consulta: SELECCIONE *, LEAD(Salario) SOBRE(Partición por nombre ORDEN POR Salario asc) como valor_de_venta_anterior DE Empleado;
Nota la
PARITION BY
cláusula es opcional. Si lo omite, la función tratará todo el conjunto de resultados como una única partición.
Gracias por leerlo.
============================= EL FIN=================== =======
GitHub: Sesión del día 4
¡Dale una estrella en github!
Referencia :
¡Espero que lo hayas encontrado útil! ¡Gracias por leer!
Sígueme para más publicaciones relacionadas con la ciencia de datos!
vamos a conectarnos LinkedIn!