ROW_NUMBER、RANK()、DENSE_RANK()和OVER的使用

ROW_NUMBER、RANK、DENSE_RANK函数和OVER的使用

  • ROW_NUMBER()
  • RANK()
  • DENSE_RANK()

ROW_NUMBER()

/*以FoodPrice列排序并显示排序后的行号*/
SELECT ROW_NUMBER() OVER(ORDER BY FoodPrice DESC) AS RowId,* FROM dbo.Food

在这里插入图片描述

/*以FoodType分组,然后以FoodPrice排序并显示所在分组的相应行号*/
SELECT ROW_NUMBER() OVER(PARTITION BY FoodType ORDER BY FoodPrice DESC) AS RowId,* FROM dbo.Food

ROW_NUMBER、RANK()、DENSE_RANK()和OVER的使用_第1张图片

RANK()

/*以FoodType分组,然后以FoodPrice排序并显示所在分组的相应行号,如果排序字段字相等则显示相同的行号,
并跳过所在的真实行号*/
SELECT RANK() OVER(PARTITION BY FoodType ORDER BY FoodPrice) AS RowID,* FROM dbo.Food

ROW_NUMBER、RANK()、DENSE_RANK()和OVER的使用_第2张图片

DENSE_RANK()

/*以FoodType分组,然后以FoodPrice排序并显示所在分组的相应行号,如果排序字段字相等则显示相同的行号,
忽略相同行号,依次递增*/
SELECT DENSE_RANK() OVER(PARTITION BY FoodType ORDER BY FoodPrice) AS RowID,* FROM dbo.Food

ROW_NUMBER、RANK()、DENSE_RANK()和OVER的使用_第3张图片
文章转载自:https://www.cnblogs.com/ianunspace/p/5057333.html

你可能感兴趣的:(数据库)