赞
踩
目录
一、 排序:row_number(), dense_rank()
参考: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 [排序字段名] )
参考: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
函数应用于分区中的行时所基于的顺序。
- select
- sku_id,sku_name,category_id3,sales_count,price,
- sales_count*price as s1,
- dense_rank() over(partition by category_id3 order by s1 desc) as r2 -- Invalid table alias or column reference 's1
- from sales_info where dt = '2019-04-26';
-
-
- select
- sku_id,sku_name,category_id3,sales_count,price,
- sales_count*price as s1,
- dense_rank() over(partition by category_id3 order by sales_count*price desc) as r2, --按照GMV排名,降序
- row_number() over(partition by category_id3 order by sales_count*price desc) as r3
- from sales_info where dt = '2019-04-26';
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。