`
azrael6619
  • 浏览: 574660 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

Oracle分析函数RANK(),ROW_NUMBER(),LAG()等的使用方法

阅读更多

 oracle分析函数rank(),row_number(),lag()等的使用方法


 row_number() over (partition by col1 order by col2)

 表示根据col1分组,在分组内部根据 col2排序
 而这个值就表示每组内部排序后的顺序编号(组内连续的唯一的)

 

 rank() 类似,不过rank 排序的时候跟派名次一样,可以并列2个第一名之后 是第3名

 

 lag 表示 分组排序后 ,组内后面一条记录减前面一条记录的差,第一条可返回 null

 

 btw: expert one on one 上讲的最详细,还有很多相关特性,文档看起来比较费劲

 

 row_number()和rownum差不多,功能更强一点(可以在各个分组内从1开时排序)


rank()是跳跃排序,有两个第二名时接下来就是第四名(同样是在各个分组内)


dense_rank()是连续排序,有两个第二名时仍然跟着第三名。


相比之下row_number是没有重复值的


lag(arg1,arg2,arg3):


arg1是从其他行返回的表达式


arg2是希望检索的当前行分区的偏移量。是一个正的偏移量,时一个往回检索以前的行的数目。


arg3是在arg2表示的数目超出了分组的范围时返回的值。

 

以下是我多表查询时用到,因为有些记录的id是相同,而我只需要取出最后一条即可。

select * from (
select distinct bb01.abz001 abz001,bb01.aab004 aab004,bb96.abb531 abb531,
row_number() over(partition by bb01.abz001 order by bb96.abb531 desc) number1
from bb01 left join bb96 on bb96.Abz001 = bb01.Abz001
Where bb96.abb534='01')
where number1=1;

 

abz001是编号,abb531是顺序

注意:1.条件 bb96.abb534='01' 放在where 跟on后面是不同的,可以参考前面博客内容

         2.我给每个字段一个别名,因为刚开始写的时候没别名出错,不过后来去掉也不报错了,所以如果有些人写的时候字段无法识别是可以加个别名。

 

分享到:
评论

相关推荐

    Oracle 分析函数RANK(),ROW_NUMBER(),LAG()等的使用方法

    Oracle分析函数RANK(),ROW_NUMBER(),LAG()等的使用方法,需要的朋友可以参考下。

    ORACLE分析函数

    Oracle分析函数RANK(),ROW_NUMBER(),LAG()等的使用方法 Oracle分析函数参考手册 开窗函数(over)详解

    Oracle 分析函数.doc

    Oracle 分析函数详解 1. 自动汇总函数rollup,cube, 2. rank 函数, rank,dense_rank,row_number 3. lag,lead函数 4. sum,avg,的移动增加,移动平均数 5. ratio_to_report报表处理函数 6. first,last取基数的分析函数

    Oracle分析函数中文+英文【英文非中文的配套】

    1、oracle分析函数 中文: 主要含: rank() 和 dense_rank() first_value()和last_value() row_number() LAG() range开窗函数 2、oracle分析函数 英文: 比较详细

    Oracle分析函数

    Oracle分析函数——函数列表 SUM :该函数计算组中表达式的累积和 MIN :在一个组中的数据窗口中查找表达式的最小值 MAX :在一个组中的数据窗口中查找表达式的最大值 AVG :用于计算一个组和数据窗口内表达式的...

    Oracle 分析函数的使用.doc

    从论坛搜到的,感觉还不错,整理成了word文档,希望对...2. rank 函数, rank,dense_rank,row_number 3. lag,lead函数 4. sum,avg,的移动增加,移动平均数 5. ratio_to_report报表处理函数 6. first,last取基数的分析函数

    oracle-10G函数大全.chm

    1,数值型函数(abs()、sign()、ceil()、floor()、power()、exp()、round()...);...6,分析函数(sum(...) over(...)、dense_rank、row_number()、lag()...); 7,其它函数(decode()、nvl()、nvl2()、least()...);

    Oracle SQL高级编程(资深Oracle专家力作,OakTable团队推荐)--随书源代码

    作者通过总结各自多年的软件开发和教学培训经验,与大家分享了掌握Oracle SQL所独有的丰富功能的技巧所在,内容涵盖SQL执行、联结、集合、分析函数、子句、事务处理等多个方面。读者可以学习到以下几个方面的技巧:...

    Oracle开发之分析函数总结

    本文是对Oracle中分析函数做的总结,主要总结了前几篇关于分析函数、窗口函数、报表函数文章的内容,需要的朋友可以参考下。

Global site tag (gtag.js) - Google Analytics