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

骇客归来

ぁ枫あ

 
 
 

日志

 
 

over用法  

2007-01-26 15:56:49|  分类: Oracle |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
表中有id和name两个字段,请您解释一下over的用法,谢谢了      
  1:      
  Select     *     From     (      
  Select     a.*     ,     row_number()     over(Order     By     field)     rk     From     tablename         a      
  )Where     rk<=10      
  2:
  RANK()     OVER(PARTITION     BY     DEPTNO     ORDER     BY     SAL     )     AS     NUM

row_number()和rownum差不多,功能更强一点(可以在各个分组内从1开时排序)  
rank()是跳跃排序,有两个第二名时接下来就是第四名(同样是在各个分组内)  



Select     *     From     (      
  Select     a.*     ,     row_number()     over(Order     By     field)     rk     From     tablename         a      
  )Where     rk<=10      
   
  row_number()   over   (partition   order   by   filed)  
   
  row_number是分析函数.  
  就是说:   tablename   按照field排序之后,   row_number()   取值就是排序后的.   第一为1,   第二为2.  
   
   
  如获取每个部门薪水前三名的员工或每个班成绩前三名的学生。  
  Select   *   from    
  (select   depno,ename,sal,row_number()   over   (partition   by   depno  
  order   by   sal   desc)   rn    
  from   emp)  
  where   rn<=3  
   
  8i以上版本,分析函数lag与lead可以提取后一条或前一天记录到本记录。  
  Select   deptno,ename,hiredate,lag(hiredate,1,null)   over  
  (partition   by   deptno   order   by   hiredate,ename)   last_hire  
  from   emp  
  order   by   depno,hiredate  


OVER不是函数,它是分析函数的一个关键字,分析函数的语法是:  
  FUNCTION_NAME(<argument>,<argument>...)  
  OVER  
  (<Partition-Clause><Order-By-Clause><Windowing   Clause>)  
   
  select   *   from   t;  
  x   y  
  1   1  
  3   1  
  1   2  
  1   1  
  3   1  
   
  select   rank()   over(order   by   x)a,x,y   from   t;  
  a   x   y  
  1   1   1  
  1   1   2  
  1   1   1  
  4   3   1  
  4   3   1  
   
  select   row_number()   over(order   by   x)a,x,y   from   t;  
  a   x   y  
  1   1   1  
  2   1   2  
  3   1   1  
  4   3   1  
  5   3   1
  评论这张
 
阅读(738)| 评论(0)
推荐 转载

历史上的今天

评论

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

页脚

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