NTILE 函数是一个 OLAP 分等级函数,将每一分区中的行划分成 N 等级的类别,称为片,每一类别包括大约相等的行数。
| 元素 | 描述 | 限制 | 语法 |
|---|---|---|---|
| unsigned | 指定要分等级为多少个类别,或片的无符号整数 | 不可为零 | 文字整数 |
由该函数的无符号整数参数设置分等级的类别,或片的数量,且在 OVER 子句的 ORDER BY 表达式之上。
NTILE(100) OVER(ORDER BY dollars)
当该参数为 4 时,返回的值将 OVER 子句定义的每一分区中的行排序成四个等分。当一组值不能由指定的整数参数分开时,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 关键字,则从最高到最低对薪酬排序。