码迷,mamicode.com
首页 > 数据库 > 详细

oracle rank()函数总结

时间:2015-08-17 15:43:11      阅读:141      评论:0      收藏:0      [点我收藏+]

标签:

首先,要了解rank在英语的意思:等级.也就是说这是一个给数据确定等级的函数.

以销售为例,有地区,年,月,销售员,销售额,记录这五个字段.我们可以按地区,年,月,销售额对销售员进行排序,这样对销售员来说就相当于有一个等级概念了,第一名就是销售最高的......,如果我们要找出每个地区,年,月,销售额的前三名销售员.SQL如何写?

java 代码

SELECT area_code, YEAR, MONTH, saleroom,saler   
       RANK () OVER 
    (PARTITION BY area_code,year ,month ORDER BY area_code,year,month,saleroom ) RANK   
FROM t_sale  



现在RANK 就是1,2,3,3,3,6,有了这个字段,就很容易得到前三名的销售员了.

新问题:销售额50000块在深圳,2007年5月能排到第几?

sql 代码
  1. SELECT    
          RANK(‘SHENZHEN‘,2007,5,50000)  WITHIN GROUP    
          (ORDER BY area_code,year,month,saleroom) Rank    
    FROM T_SALE 上面这个SQL就可以搞定了.要注意的是,Rank()里的参数必须为常数,或常值表达式,里面参数的个数,类型也要和order by后字段的类型相对应.

上面就是Rank函数的两个用法.另外还有一个dense_rank(),它的用法和rank()一样,只是计算等级的方式不同.例如上面的

1,2,3,3,3,6.用dense_rank() 就是1,2,3,3,3,4.

oracle rank()函数总结

标签:

原文地址:http://my.oschina.net/stonezing/blog/493497

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!