跳到主要内容
翻译页面

本页面由 AI 辅助从英文翻译而来。如两者存在差异,以英文版本为准。

NTILE

将分区尽可能均匀地划分为 N 组,并按照 ORDER BY 子句定义的顺序为每组分配一个介于 1 和 N 之间的整数,否则按任意顺序分配。必要时,较大的组排在前面。

另请参阅: [SELECT] [RANK]


语法​

SELECT NTILE(N) OVER ([PARTITION BY column] ORDER BY column [ASC|DESC])
FROM <multipartIdentifier>;

参数​

N 一个正整数,指定将分区划分成的组(桶)的数量。

PARTITION BY column 可选。将结果集划分为多个分区。NTILE 函数分别应用于每个分区。

ORDER BY column 指定将行分配到桶的顺序。

返回值​

返回一个介于 1 和 N 之间的整数,表示当前行所属的桶(组)。


示例​

按贡献水平将贡献者分为四分位组​

-- Group contributors into quartiles by contribution level
SELECT
login,
contributions,
NTILE(4) OVER (ORDER BY contributions DESC) as contribution_quartile,
CASE NTILE(4) OVER (ORDER BY contributions DESC)
WHEN 1 THEN 'Top Contributors'
WHEN 2 THEN 'Active Contributors'
WHEN 3 THEN 'Moderate Contributors'
WHEN 4 THEN 'Occasional Contributors'
END as contributor_tier
FROM github.repos.contributors
WHERE owner = 'stackql'
AND repo = 'stackql';
提示

使用 NTILE 可以在数据中创建分段或层级。常见用例包括将数据划分为四分位(N=4)、十分位(N=10)或百分位(N=100)。

有关更多信息,请参阅 https://sqlite.org/windowfunctions.html#built-in_window_functions。