当前位置:   article > 正文

SQL 开窗函数,row_number, dense_rank, percent_rank_开窗函数row number

开窗函数row number

目录

一、  排序:row_number(), dense_rank()

1、row_number()

2、dense_rank()

 3、应用示例:

二、  百分比:percent_rank()

1、percent_rank()参数说明

2、应用示例


一、  排序:row_number(), dense_rank()

1、row_number()

参考:SQL SERVER函数row_number的应用示例 - 墨天轮

微软从SQL SERVER 2005开始提供了一个函数:row_number(),用来生成行号。

它可以按指定字段进行排序,为查询结果集生成行号,还可以指定分组字段,对查询结果集进行分组后为每组从1开始生成行号。

它的语法:

1、不分组的方式:ROW_NUMBER() OVER (ORDER BY [排序字段名] DESC) 

2、按指定字段分组的方式:ROW_NUMBER  () OVER (PARTITION BY [分组字段名] ORDER BY [排序字段名] )

2、dense_rank()

参考:DENSE_RANK (Transact-SQL) - SQL Server | Microsoft Learn

此函数返回结果集分区中每行的排名,排名值没有间断。 特定行的排名等于该特定行之前不同排名值的数量加一。

语法

DENSE_RANK ( ) OVER ( [ <partition_by_clause> ] < order_by_clause > )  

参数

partition_by_clause<>
首先将 FROM 子句生成的结果集划分到分区,然后将 DENSE_RANK 函数应用到每个分区。 有关 PARTITION BY 语法,请参阅 OVER 子句 (Transact-SQL)

order_by_clause<>
确定将 DENSE_RANK 函数应用于分区中的行时所基于的顺序。

 3、应用示例:

  1. select
  2. sku_id,sku_name,category_id3,sales_count,price,
  3. sales_count*price as s1,
  4. dense_rank() over(partition by category_id3 order by s1 desc) as r2 -- Invalid table alias or column reference 's1
  5. from sales_info where dt = '2019-04-26';
  6. select
  7. sku_id,sku_name,category_id3,sales_count,price,
  8. sales_count*price as s1,
  9. dense_rank() over(partition by category_id3 order by sales_count*price desc) as r2, --按照GMV排名,降序
  10. row_number() over(partition by category_id3 order by sales_count*price desc) as r3
  11. from sales_info where dt = '2019-04-26';

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/从前慢现在也慢/article/detail/702321
推荐阅读
相关标签
  

闽ICP备14008679号