NTILE
更新时间:2025-10-16
描述
NTILE() 是一个窗口函数,用于将有序数据集平均分配到指定数量的桶中。桶的编号从 1 开始顺序编号,直到指定的桶数。当数据无法平均分配时,优先将多出的记录分配给编号较小的桶,使得各个桶中的行数最多相差 1。
语法
SQL
1NTILE( <constant_value> )
参数
| 参数 | 说明 |
|---|---|
| constant_value | 必需。指定要分配的桶数量,必须是正整数 |
返回值
返回 BIGINT 类型的桶编号,范围从 1 到指定的桶数。
使用说明
如果语句中同时包含 NTILE 函数的 ORDER BY 子句和输出结果的 ORDER BY 子句,这两个排序是独立的:
- NTILE 函数的 ORDER BY 决定了行被分配到哪个桶中
- 输出的 ORDER BY 决定了结果的显示顺序
举例
SQL
1SELECT
2 name,
3 score,
4 NTILE(4) OVER (ORDER BY score DESC) as quarter
5FROM student_scores;
Text
1+----------+-------+---------+
2| name | score | quarter |
3+----------+-------+---------+
4| Alice | 98 | 1 | -- 前 25% 的成绩
5| Bob | 95 | 1 |
6| Charlie | 90 | 2 | -- 前 25-50% 的成绩
7| David | 85 | 2 |
8| Eve | 82 | 3 | -- 前 50-75% 的成绩
9| Frank | 78 | 3 |
10| Grace | 75 | 4 | -- 后 25% 的成绩
11| Henry | 70 | 4 |
12+----------+-------+---------+
