OVER(PARTITION BY column_name1 ORDER BY column_name2) 用法 及 ROW_NUMBER\RANK\DENSE_RANK的区别
来源:互联网 发布:有道云笔记网络错误 编辑:程序博客网 时间:2024/05/19 23:54
/*建立测试表*/
CREATE TABLE [dbo].[t1](
[a] [nchar](10) NULL,
[b] [nchar](10) NULL,
[c] [nchar](10) NULL
) ON [PRIMARY]
--插入一下测试数据
insert dbo.t1 values('1', '1b', NULL )
insert dbo.t1 values('1', '2b', NULL)
insert dbo.t1 values('1', '3b', NULL)
insert dbo.t1 values('1', '4b', NULL)
insert dbo.t1 values('2', '1b', NULL)
insert dbo.t1 values('2', '2b', NULL)
insert dbo.t1 values('3', '1b', NULL)
insert dbo.t1 values('3', '2b', NULL)
insert dbo.t1 values('3', '3b', NULL)
insert dbo.t1 values('4', 'b', NULL)
insert dbo.t1 values('5', '5b', NULL)
insert dbo.t1 values('5', '2b', NULL)
insert dbo.t1 values('5', '2b', NULL)
insert dbo.t1 values('5', '3b', NULL )
--将a值相同的数据行前加行编号 ROW_NUMBER() OVER(PARTITION BY a ORDER BY a)
/*
分析函数(PARTITION BY)
用于计算基于组的某种聚合值,它和聚合函数的不同之处是:对于每个组返回多行,而聚合函数对于每个组只返回一行。
开窗函数(order by)
指定了分析函数工作的数据窗口大小,这个数据窗口大小可能会随着行的变化而变化,
*/
select ROW_NUMBER() OVER(PARTITION BY a ORDER BY a ) AS RowNumber,a,b,c
from t1
/*
1 5 5b NULL
2 5 2b NULL
3 5 2b NULL
4 5 3b NULL
*/
/*
2.rank()和dense_rank()可以将所有的都查找出来:
如上可以看到采用rank可以将并列第一名的都查找出来;
rank()和dense_rank()区别:
--rank()是跳跃排序,有两个第一名时接下来就是第三名;
*/
select rank() OVER(PARTITION BY a order by b ) AS RowNumber,a,b,c
from t1
/*
1 5 2b NULL
1 5 2b NULL
3 5 3b NULL
4 5 5b NULL
*/
select DENSE_RANK() OVER(PARTITION BY a order by b ) AS RowNumber,a,b,c
from t1
/*
1 5 2b NULL
1 5 2b NULL
2 5 3b NULL
3 5 5b NULL
*/
- OVER(PARTITION BY column_name1 ORDER BY column_name2) 用法 及 ROW_NUMBER\RANK\DENSE_RANK的区别
- row_number() over (partition by....order by...)用法
- row_number() over (partition by....order by...)用法
- row_number() over (partition by....order by...)用法
- Oracle之row_number() / rank() / dense_rank() / over(partition order by)序列函数
- row_number() over(partition by xxx order by xxx)的用法
- row_number() over(partition by col1 order by col2)的用法
- ROW_NUMBER() OVER(PARTITION BY COLUMN ORDER BY COLUMN)的用法
- Row_number () over (partition by col1 order by col2)的用法
- row_number() over (partition by....order by...)用法 二
- row_number() over (partition by....order by...)用法 一
- row_number() over(partition by a order by b desc) 用法
- oracle的“over partition by”的用法,over不能单独使用,要和分析函数:rank(),dense_rank(),row_number()等一起使用。
- ROW_NUMBER() OVER (PARTITION BY ... ORDER BY ...)
- [整理]rank over (partition by ... order by ...)
- Oracle中row_number() over(partition by xxx order by xxx)的用法
- oracle 分组编号 ROW_NUMBER() OVER(PARTITION BY COLUMN ORDER BY COLUMN ) 的用法
- SQL中分析函数ROW_NUMBER() OVER(PARTITION BY GRADEOBJECTID ORDER BY BG.GRADEDATE DESC)的用法!!!
- 经典讲解C# get set
- C#面试题集之二
- 条件查询与筛选
- Android opengl es 2.0怎么学习
- 818健康那点事,随便纪念下于娟
- OVER(PARTITION BY column_name1 ORDER BY column_name2) 用法 及 ROW_NUMBER\RANK\DENSE_RANK的区别
- Java OutOfMemoryError 汇总
- Windows环境下面搭建Objective-C开发环境
- JFreeChart时序图
- 在C语言中利用PCRE实现正则表达式
- Java 集合框架 性能分析
- Hdu1151 Air Raid
- iPhone/Mac Objective-C内存管理教程和原理剖析(三)@property (retain)和@synthesize的默认实现
- JNI调用Java方法