翻译页面
本页面由 AI 辅助从英文翻译而来。如两者存在差异,以英文版本为准。
NTILE
将分区尽可能均匀地划分为 N 组,并按照 ORDER BY 子句定义的顺序为每组分配一个介于 1 和 N 之间的整数,否则按任意顺序分配。必要时,较大的组排在前面。
语法
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。