Jun 03

Funciones de ranking en #sqlserver

Este tipo de función devuelven un valor que representa el rango de una fila con respecto al resto de las filas de la ventana. Para lograr esto, las funciones de clasificación requieren un ORDER BY.

Las funciones de ranking son 4:

  • ROW_NUMBER(),
  • RANK (),

  • DENSE_RANK()  y

  • NTILE.

ROW_NUMBER()

Permite enumerar los resultados de una manera sencilla, es decir, nos devuelve el número secuencial para cada una de la filas de un conjunto de resultados , donde la primera fila es 1.

RANK()

Devuelve el rango de cada fila en la partición de un conjunto de resultados.

DENSE_RANK()

Devuelve el rango de filas dentro de la partición de un conjunto de resultados, sin separaciones en la clasificación.

NTILE

Esta función lo que hace es limitar la numeración máxima de los resultados.

number one (image can be used for printing or web)

Hay más combinaciones que se puede hacer entre las funciones de ranking y otras características de SQL Server , como por ejemplo, emplearlos usando CTEs..

Vamos con los ejemplos. primero creamos la vista para las demos

Captura

La principal diferencia entre RANK y DENSE_RANK es el manejo de filas cuando hay valores de unión.

Captura

En este ejemplo, RANK inserta un hueco en la numeración después de un conjunto de valores , mientras DENSE_RANK no.

Y NTILE podemos utilizarlo para crear 7 grupos o categorías de productos.

CapturaEl fichero para practicar: http://1drv.ms/1G11srS