Menu

Funciones de categoría 3/4, DENSE_RANK()

Septiembre 1, 2013 - SQL Server

Continuando con nuestra serie de post de funciones de categoría en SQL Server seguimos con la función DENSE_RANK(), esta función funciona en todo del mismo modo que RANK(), la diferencia principal radica en que en que al encontrar dos registros con igual cantidad en la columna de de ordenamiento asigna el mismo rango a ambos, pero al contrario que RANK() al próximo registro le asigna el rango anterior mas uno, es decir no se ‘salta’ un rango, como si lo hace la función RANK(), veamos un ejemplo:

SELECT
  Production.Product.Name,
  SUM(Sales.SalesOrderDetail.OrderQty) AS 'OrderQty',
  Production.ProductCategory.Name AS 'Category',
  DENSE_RANK() OVER (ORDER BY SUM(Sales.SalesOrderDetail.OrderQty) DESC) AS 'Rank'
  FROM Production.ProductCategory
    INNER JOIN Production.ProductSubcategory
    ON ProductCategory.ProductCategoryID = ProductSubcategory.ProductCategoryID
      INNER JOIN Production.Product
      ON Product.ProductSubcategoryID = ProductSubcategory.ProductSubcategoryID
        INNER JOIN Sales.SalesOrderDetail
        ON Production.Product.ProductID = Sales.SalesOrderDetail.ProductID
  GROUP BY Production.Product.Name,
    Production.ProductCategory.Nam
  ORDER BY Rank

image

En lo demás es idéntica a RANK().

Happy coding Sonrisa

Un pensamiento sobre “Funciones de categoría 3/4, DENSE_RANK()

Jorge

Muchas gracias, tu explicación es muy clara .. salu2

Respuesta

Deja un comentario

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