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

6 comentarios en «INSTRUCCION RANK y DENSE_RANK»

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.