INSTRUCCION RANK y DENSE_RANK

Imagina que contamos con un grupo de alumnos de los cuales tenemos las notas obtenidas en las materias de Matemática, Humanidades, Derecho y queremos saber en base a su nota la posición obtenida del alumno en cada materia, para esto necesitaríamos clasificar las notas de mayor a menor.
Otro ejemplo podría ser si imaginamos una lista de productos agrupados por una categoría y queremos organizar los productos del más caro al más barato por cada categoría, la imagen de abajo muestra los datos sin ordenar.

Para esto en SQL Server de Microsoft usamos la instrucciónes RANK  ó DENSE_RANK
RANK
La instrucción RANK permite clasificar los elementos de un grupo  en posiciones (primero, segundo, tercero…..n), si hay  elementos con el mismo valor los coloca dentro de la misma posición (como en empate) pero al inmediato inferior le da la posición en base al numero de elementos existentes, Ejemplo:
Select Categoria, NombreProducto, Precio, RANK () over(partitionby categoria
orderby precio desc as Posicion from Producto

DENSE_RANK
Igual que la instrucción RANK, permite clasificar los elementos de un grupo  en posiciones (primero, segundo, tercero…..n), llenando totas las posiciones hasta quedarse sin elementos, si hay  elementos con el mismo valor los coloca dentro de la misma posición (como en empate) y al inmediato inferior le da el correlativo siguiente a la clasificación de posición, Ejemplo:
SELECT Categoria, NombreProducto, Precio, dense_rank()over(partitionby categoria orderby precio desc) as Posicion from Producto

One thought on “INSTRUCCION RANK y DENSE_RANK

Leave a Reply

Your email address will not be published. Required fields are marked *