分析函式——NTILE(n)
有時會有這樣的需求:如果資料排序後分為三部分,業務人員只關心其中的一部分,如何將這中間的三分之一資料拿出來呢?
這時比較好的選擇,就是使用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 的資料就可以了
這時比較好的選擇,就是使用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部落格 ” ,連結:http://blog.itpub.net/28929558/viewspace-1181432/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- NTILE()函式函式
- [20150205]分析函式ntile.txt函式
- WIDTH_BUCKET和NTILE函式.txt函式
- SQL SERVER 排序函式ROW_NUMBER、RANK、DENSE_RANK、NTILESQLServer排序函式
- 使用Oracle分析函式隨機抽取N條記錄Oracle函式隨機
- Oracle分析函式七——分析函式案例Oracle函式
- Oracle聚合函式/分析函式Oracle函式
- 函式組合的 N 種模式函式模式
- 分析函式函式
- 【分析函式】Oracle分析函式之LAG和LEAD函式Oracle
- 分析函式概述函式
- 分析函式 over函式
- Oracle 分析函式Oracle函式
- 分析函式 - LAG函式
- Oracle分析函式Oracle函式
- Oracle分析函式與視窗函式Oracle函式
- 【Analytic】分析函式之MIN函式函式
- 【Analytic】分析函式之MAX函式函式
- 【Analytic】分析函式之AVG函式函式
- 【Analytic】分析函式之RANK函式函式
- 【Analytic】分析函式之COUNT函式函式
- 建構函式,拷貝賦值函式的N種呼叫情況函式賦值
- oracle 10g函式大全--分析函式Oracle 10g函式
- sql優化用group by 函式代替分析函式SQL優化函式
- Hive之分析函式Hive函式
- 分析函式——統計函式
- oracle 分析函式(轉)Oracle函式
- oracle分析函式(一)Oracle函式
- Oracle常用分析函式Oracle函式
- Oracle分析函式{轉}Oracle函式
- 多維分析函式函式
- Oracle分析函式-6Oracle函式
- Oracle分析函式-5Oracle函式
- Oracle分析函式-4Oracle函式
- Oracle分析函式-2Oracle函式
- Oracle分析函式-1Oracle函式
- Oracle分析函式-3Oracle函式
- oracle的分析函式over 及開窗函式Oracle函式