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 关键字,则从最高到最低对薪酬排序。