必威体育Betway必威体育官网
当前位置:首页 > IT技术

ROW_NUMBER 用法小结

时间:2019-08-14 03:13:12来源:IT技术作者:seo实验室小编阅读:55次「手机版」
 

row_number

row_number函数是返回结果集分区内行的序列号,每个分区的第一行从 1 开始。

CREATE TABLE [dbo].[tb_Seller](
	[编号] [nvarchar](50) NULL,
	[商品名称] [nvarchar](50) NULL,
	[销售额] [money] NULL,
	[利润] [money] NULL,
	[门店名称] [nvarchar](50) NULL,
	[日期] [smalldatetime] NULL,
	[销售员] [nvarchar](50) NULL
)

例如创建一个销售表,insert如下数据

1,按照销售额大小,加一个序号 

select 编号,商品名称,销售额,利润,门店名称,日期,销售员,row_number() over (order by 销售额) as [序号] 
from dbo.tb_Seller

2,返回特定的子集,例如我只要销售额第三名的

;with data as
(select 编号,商品名称,销售额,利润,门店名称,日期,销售员,row_number() over (order by 销售额) as [序号] 
from dbo.tb_Seller)
select * from data  where [序号]=3

3,还有一种在处理批量数据的时候,insert 了重复多余的数据,只是insert的时间不同,对于批量删除多余的数据就可以用到ROW_NUMBER,partition by。如下图,将该销售表的数据复制三分,只是时间不相同而已

用如下方法就可以很容易的删除掉多余的数据

--row_number() OVER (PARTITION BY COL1 ORDER BY COL2) 
--表示根据COL1分组,在分组内部根据COL2排序,而此函数计算的值就表示每组内部排序后的顺序编号(组内连续的唯一的)


;with data as
(select 编号,row_number() over (partition by convert(varchar(10),日期,120) order by 销售额) as [序号] 
 from dbo.tb_Seller group by 编号,销售额,日期)
 
delete a from dbo.tb_Seller a inner join data b on a.[编号]=b.[编号] where [序号] in (2,3) 

以下排序函数DENSE_RANK、RANK、NTILE 和row_number类似都可以和over结合使用,其它排序函数的用法可以以后详细了解下。over函数还可以和sum,max 等聚合函数一起使用,max() over(partition by ... order by ...):求分组后的最大值。大家可以在sql server 帮助,搜索中查找个函数的用法。

相关阅读

UpdateData()用法

一、总结UpdateData()函数UpdateData(true);//用于将屏幕上控件中的数据交换到变量中。UpdateData(false);//用于将数据在屏幕中

Glide高级用法

目录 简介 Glide是面向Android的快速高效的开源媒体管理和图像加载框架,将媒体解码,内存和磁盘缓存以及资源池融合到一个简单

oracle中游标详细用法

转自:http://blog.csdn.net/liyong199012/article/details/8948952 游标的概念:    游标是SQL的一个内存工作区,由系统或用户

NameValuePair的用法

定义了一个list,该list的数据类型是NameValuePair(简单名称值对节点类型),这个代码多处用于Java像url发送Post请求。在发送post请求时

#define的常见用法

先来讲一讲#define的优点与缺点: [优点] 当在程序中想要修改某一个值得时候,而且这个值又在很多地方引用。这时候就能体现出宏定

分享到:

栏目导航

推荐阅读

热门阅读