SelectDB Enterprise
参考手册
SQL 函数
窗口函数
NTILE

NTILE

描述

NTILE() 是一个窗口函数,用于将有序数据集平均分配到指定数量的桶中。桶的编号从 1 开始顺序编号,直到指定的桶数。当数据无法平均分配时,优先将多出的记录分配给编号较小的桶,使得各个桶中的行数最多相差 1。

语法

NTILE( <constant_value> )

参数

参数说明
constant_value必需。指定要分配的桶数量,必须是正整数

返回值

返回 BIGINT 类型的桶编号,范围从 1 到指定的桶数。

使用说明

如果语句中同时包含 NTILE 函数的 ORDER BY 子句和输出结果的 ORDER BY 子句,这两个排序是独立的:

  • NTILE 函数的 ORDER BY 决定了行被分配到哪个桶中
  • 输出的 ORDER BY 决定了结果的显示顺序

举例

SELECT 
    name,
    score,
    NTILE(4) OVER (ORDER BY score DESC) as quarter
FROM student_scores;
+----------+-------+---------+
| name     | score | quarter |
+----------+-------+---------+
| Alice    | 98    | 1       |  -- 前 25% 的成绩
| Bob      | 95    | 1       |
| Charlie  | 90    | 2       |  -- 前 25-50% 的成绩
| David    | 85    | 2       |
| Eve      | 82    | 3       |  -- 前 50-75% 的成绩
| Frank    | 78    | 3       |
| Grace    | 75    | 4       |  -- 后 25% 的成绩
| Henry    | 70    | 4       |
+----------+-------+---------+
© 2025 北京飞轮数据科技有限公司 京ICP备2022004029号 | Apache、Apache Doris 以及相关开源项目名称均为 Apache 基金会商标