ITPub博客

首页 > 数据库 > Oracle > 分析函数——NTILE(n)

分析函数——NTILE(n)

原创 Oracle 作者:呆呆笨笨的鱼 时间:2014-06-12 15:42:04 0 删除 编辑
有时会有这样的需求:如果数据排序后分为三部分,业务人员只关心其中的一部分,如何将这中间的三分之一数据拿出来呢?

这时比较好的选择,就是使用NTILE函数

例:
SQL> select
  2     dept_id
  3    ,sale_date
  4    ,goods_type
  5    ,sale_cnt
  6    ,ntile(3) over (order by sale_cnt desc nulls last)  all_cmp
  7    ,ntile(3) over (partition by dept_id order by sale_cnt desc nulls last) all_dept
  8  from criss_sales
  9  ;
 
DEPT_ID SALE_DATE   GOODS_TYPE    SALE_CNT    ALL_CMP   ALL_DEPT
------- ----------- ---------- ----------- ---------- ----------
D02     2014/5/2    G03                900          1          1
D01     2014/4/30   G03                800          1          1
D01     2014/3/4    G00                700          1          1
D02     2014/3/6    G00                500          2          1
D02     2014/4/27   G01                300          2          2
D01     2014/4/8    G01                200          2          2
D02     2014/4/8    G02                100          3          3
D01     2014/5/4    G02                 80          3          2
D01     2014/6/12   G01                             3          3

可以看到,Ntile函数为各个记录在记录集中的排名计算比例,返回每条记录所在集合比例位置的值。

例如我们关心全公司前三分之一部分的数据,只需选择 ALL_CMP = 1 的数据就可以了
    如果只是关心全公司中间的三分之一数据,只需选择 ALL_CMP = 2 的数据就可以了

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/28929558/viewspace-1181432/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2014-04-17

  • 博文量
    62
  • 访问量
    939480