NTILE 函数

NTILE 函数是一个 OLAP 分等级函数,将每一分区中的行划分成 N 等级的类别,称为片,每一类别包括大约相等的行数。

语法

NTILE 函数
元素 描述 限制 语法
unsigned 指定要分等级为多少个类别,或片的无符号整数 不可为零 文字整数

用法

由该函数的无符号整数参数设置分等级的类别,或片的数量,且在 OVER 子句的 ORDER BY 表达式之上。

例如,对于查询结果集中的所有行的 dollars 列中的值,下列分等级函数表达式返回从 1 至 100 的百分比的等级:
NTILE(100) OVER(ORDER BY dollars)

当该参数为 4 时,返回的值将 OVER 子句定义的每一分区中的行排序成四个等分。当一组值不能由指定的整数参数分开时,NTILE 函数将剩余的行放置在低等级的片中。

示例:NTILE 函数

下列查询按照员工薪酬将部门中的员工分等级,并对于每一部门计算 1 至 5 的片数。

SELECT name, salary,
        NTILE(5) OVER (PARTITION BY dept ORDER BY salary)
        FROM employee;
        name      salary        (ntile)
        John      35,000              1
        Jack      38,400              1
        Julie      41,200              2
        Manny      45,600              2
        Nancy      47,300              3
        Pat      49,500              4
        Ray      51,300              5

从最低到最高对薪酬排序,因为 ORDER BY 子句的缺省的排序方向为升序。如果您在 ORDER BY 子句中包括 DESC 关键字,则从最高到最低对薪酬排序。

1 请参阅 OLAP window 表达式的 OVER 子句