lunes, 18 de julio de 2011

Rank de datos agrupados (ROW_NUMBER(), DENSE_RANK() , NTILE)

Ejemplos con nortwind.

ROW_NUMBER()
 Devuelve el número secuencial de una fila de una partición de un conjunto de resultados, comenzando con 1 para la primera fila de cada partición.

select ROW_NUMBER() over (order by companyname),
 companyname,CustomerID
from Customers

DENSE_RANK()
 Devuelve el rango de filas dentro de la partición de un conjunto de resultados, sin ningún espacio en la clasificación. El rango de una fila es uno más el número de rangos distintos anteriores a la fila en cuestión.


With tble1 AS
(
select Orders.CustomerID,
COUNT(*) as counts 
from Orders
group by CustomerID
)
select tble1.customerid,
DENSE_RANK() OVER (ORDER BY tble1.counts desc) AS [cust grade]
from tble1

NTILE


Distribuye las filas de una partición ordenada en un número especificado de grupos. Los grupos se numeran a partir del uno. Para cada fila, NTILE devuelve el número del grupo al que pertenece la fila.

select ProductName, UnitsInStock,
NTILE (2) OVER(order by unitsinstock desc) as 'Ntile'
from Products
where UnitsInStock>20

No hay comentarios.: