La función en SQL RANK () es una función de ventana (funciones que operan en un conjunto de filas y devuelven un solo valor agregado para cada fila), asigna un rango basado en los atributos especificados a cada fila dentro de una partición de un conjunto resultante.
La sintaxis de la función SQL RANK
La siguiente es la sintaxis para usar la función de clasificación en SQL:
SELECT columnName
RANK() OVER(
PARTITION BY ‘expression’
ORDER BY ‘expression’ [ASC/DESC])
AS ‘myName’
FROM tableName;
- La cláusula OVER divide y ordena el resultado antes de que se aplique la función de clasificación. Es obligatorio utilizar esta cláusula en la consulta.
- PARTITION BY divide la salida con cláusula FROM en la partición. Esta cláusula es opcional para usar en la consulta.
- La cláusula ORDER BY determina el orden de las filas en orden ascendente o descendente según el nombre de la columna deseada. No usar la cláusula order by no causará ningún error, pero no obtendrá el resultado deseado.
Ejemplos de la función SQL RANK ()
La función SQL RANK () es de clasificación y se utiliza para especificar la clasificación de cada registro en el resultado. Como en los datos de muestra, tenemos varias materias, y si queremos clasificar a los estudiantes en función de sus calificaciones por materias, haremos lo siguiente.
SELECT *, RANK() OVER( PARTITION BY EMP_DEPT ORDER BY EMPID ASC ) AS 'RANK' FROM EMPLEADO;
En el resultado anterior, se puede notar que los rangos se han otorgado por departamento para cualquier empleado en particular. Se han asignado rangos en el rango de [1, n] donde n es el conteo numérico del rango.
Uso de la función SQL RANK sin partición
SELECT *, RANK() OVER( ORDER BY EMP_DEPT DESC ) AS 'RANK' FROM EMPLEADO
Funciones de rango de clasificación en el servidor SQL:
- ROW_NUMBER () – Asigna los números de rango consecutivos a cada fila única en la tabla.
- DENSE_RANK (): también asigna un rango a cada fila en una partición. Pero a diferencia de la función RANK (), no omite el número para valores similares.
- NTILE (): divide los registros en algunas particiones y asigna valores únicos (clasificaciones de lectura) a cada registro.
Conclusión
La función SQL Rank es una función de clasificación en SQL que asignará un número a cada fila que se muestra como salida. Los rangos se asignan en orden consecutivo es decir 1, 2, 3, 4 ,… y así sucesivamente. En caso de que más de una fila sea idéntica, se asignará el mismo rango a todas ellas, pero en este caso, el rango asignado a la siguiente fila no idéntica será el rango asignado a la fila anterior más el número de duplicados. Se deben considerar las siguientes cosas al usar la función de clasificación:
- Las funciones de clasificación funcionan con la cláusula over (). Por lo tanto, es obligatorio usar la cláusula over ().
- La función RANK debe ser utilizada en conjunto con una cláusula ORDER BY para especificar la columna por la cual se debe calcular el rango. filas en base a algún atributo (especificado en la consulta), se le asignará el rango.
- Asigna un rango único a cada registro, excepto cuando varios registros tienen el mismo valor en la columna especificada, en cuyo caso se les asigna el mismo rango.
- La función RANK puede ser utilizada con conjunto de resultados de una sola tabla o con una combinación de varias tablas mediante una cláusula JOIN.
- La función RANK puede ser utilizada en conjunto con otras funciones de ventana para calcular estadísticas adicionales, como DENSE_RANK, ROW_NUMBER, AVG, SUM, etc.
Podemos decir que la función SQL RANK () Asigna el rango a cada fila en una partición; sin embargo, omite el número para registros similares.
Muchas gracias por compartir, me ha servido a la perfecciòn, excelente pagina para aprender