Ntile
語法: ntile(expr) over([partition_clause] order_by_clause)
可以看作是把有序的數據集合平均分配到expr指定的數量的桶中,將桶號分配給每一行。
如果不能平均分配,則較小桶號的桶分配額外的行,並且各個桶中能放的行數最多相差1。
例如如果桶的數量為4,一共有6行,則:
1號桶:1行,2行;
2號桶:3行,4行;
3號桶:5行;
4號桶:6行;
例如,NTILE列返回每一行所應該被分配的桶號。
SQL> select ename, sal, deptno,
ntile(4) over(partition by deptno order by sal) ntile
from emp;
ENAME SAL DEPTNO NTILE
-------------------- ---------- ---------- ----------
MILLER 1300 10 1
CLARK 2450 10 2
KING 5002 10 3
SMITH 800 20 1
ADAMS 1100 20 1
JONES 2975 20 2
SCOTT 3000 20 3
FORD 3000 20 4
JAMES 950 30 1
MARTIN 1250 30 1
WARD 1250 30 2
TURNER 1500 30 2
ALLEN 1600 30 3
BLAKE 2850 30 4
已選擇14行。