登录  
 加关注
查看详情
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

飞哥的技术博客

世上无难事,只怕有心人!

 
 
 

日志

 
 
 
 

ORACLE函数介绍第六篇 著名函数之分析函数收藏  

2009-05-25 16:56:00|  分类: Oracle |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

ORACLE函数介绍第六篇 著名函数之分析函数收藏

 

1、AVG([DISTINCT|ALL] expr) OVER(analytic_clause) 计算平均值。

SELECT col, AVG(value) FROM tmp1 GROUPBY col ORDERBY col;

SELECT col, AVG(value) OVER(PARTITIONBY col ORDERBY col)

2、SUM ( [ DISTINCT | ALL ] expr ) OVER ( analytic_clause )

SELECT col, sum(value) FROM tmp1 GROUPBY col ORDERBY col;

SELECT col, sum(value) OVER(PARTITIONBY col ORDERBY col)

3、COUNT({* | [DISTINCT | ALL] expr}) OVER (analytic_clause)查询分组序列中各组行数。

SELECT col,count(0) over(partitionby col orderby col) ct FROM tmp1;

MIN(value) KEEP(DENSE_RANK FIRSTORDERBY col) "Min Value",

MAX(value) KEEP(DENSE_RANK LASTORDERBY col) "Max Value"

MIN(value) KEEP(DENSE_RANK FIRSTORDERBY col) OVER(PARTITIONBY col),

MAX(value) KEEP(DENSE_RANK LASTORDERBY col) OVER(PARTITIONBY col)

6、FIRST_VALUE (col) OVER ( analytic_clause ) 返回over()条件查询出的第一条记录

insertinto tmp1 values ('test6','287');

       FIRST_VALUE(value) over(partitionby col orderbyvalue) "First",

       LAST_VALUE(value) over(partitionby col orderbyvalue) "Last"

7、LAST_VALUE (col) OVER ( analytic_clause ) 返回over()条件查询出的最后一条记录

8、LAG(col[,n][,n]) over([partition_clause] order_by_clause) lag是一个相当有意思的函数,其功能是返回指定列col前n1行的值(如果前n1行已经超出比照范围,则返回n2,如不指定n2则默认返回null),如不指定n1,其默认值为1。

       LAG(value) over(orderbyvalue) "Lag",

       LEAD(value) over(orderbyvalue) "Lead"

9、LEAD(col[,n][,n]) over([partition_clause] order_by_clause)

10、MAX (col) OVER (analytic_clause)

Max(value) over(partitionby col orderbyvalue) "Max",

Min(value) over(partitionby col orderbyvalue) "Min"

11、MIN (col) OVER (analytic_clause

12、RANK() OVER([partition_clause] order_by_clause

insertinto tmp1 values ('test2',120);

       RANK() OVER(orderbyvalue) "RANK",

       DENSE_RANK() OVER(orderbyvalue) "DENSE_RANK",

       ROW_NUMBER() OVER(orderbyvalue) "ROW_NUMBER"

13、DENSE_RANK () OVER([partition_clause] order_by_clause) 

14、ROW_NUMBER () OVER([partition_clause] order_by_clause) 这个函数需要多说两句,通过上述的对比相信大家应该已经能够看出些端倪。前面讲过,dense_rank在做排序时如果遇到列有重复值,则重复值所在行的序列值相同,而其后的序列值依旧递增,rank则是重复值所在行的序列值相同,但其后的序列值从+重复行数开始递增,而row_number则不管是否有重复行,(分组内)序列值始终递增

  评论这张
 
阅读(138)| 评论(0)

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018