在SQL Server NTILE()函数是窗口函数的有序分区的行分配到大致相等的组的预定义的数目。它为每个组分配一个number_expression,范围为1。NTILE()函数为该行所属的组中的每一行分配一个number_expression。
用法:
NTILE(number_expression) OVER ( [PARTITION BY partition_expression ] ORDER BY sort_expression [ASC | DESC] )
语法参数详细:
- number_expression
该number_expression是整数到其中的行划分。 - PARTITION BY子句
的PARTITION BY是可选的,它不同的结果集的行插入其中使用NTILE()函数分区。
- ORDER BY子句
ORDER BY子句定义其中使用NTILE()每个分区行的顺序。
当行数是不被number_expression整除,则NTILE()函数导致两种尺寸的组与由一个的差异。较大的群体总是提前由ORDER指定的顺序中的小团体由OVER()子句中。此外,当所有行的是整除的number_expression,函数整除number_expression中的行。
例:
让我们创建一个名为geeks_demo的表:
CREATE TABLE geeks_demo ( ID INT NOT NULL ); INSERT INTO geeks_demo(ID) VALUES(1), (2), (3), (4), (5), (6), (7), (8), (9), (10);
现在,
SELECT * FROM geeks_demo;
ID |
---|
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
- 使用NTILE()函数将上述行分为3组:
SELECT ID, NTILE (3) OVER ( ORDER BY ID ) Group_number FROM geeks_demo;
输出:
ID Group_number 1 1 2 1 3 1 4 1 5 2 6 2 7 2 8 3 9 3 10 3 - 使用NTILE()函数行分配到5组:
SELECT ID, NTILE (3) OVER ( ORDER BY ID ) Group_number FROM geeks_demo;
输出:
ID Group_number 1 1 2 1 3 2 4 2 5 3 6 3 7 4 8 4 9 5 10 5 - 如果有人试图运行使用NTILE()函数,无需number_expression:
SELECT ID, NTILE () OVER ( ORDER BY ID ) Group_number FROM geeks_demo;
输出:
它会抛出以下错误:The function 'NTILE' takes exactly 1 argument(s).
相关用法
- SQL Server STUFF()用法及代码示例
- SQL Server SIN()、COS()用法及代码示例
- SQL Server RANK()用法及代码示例
- SQL Server STR()用法及代码示例
- SQL Server UNICODE()用法及代码示例
- SQL Server SUBSTRING()用法及代码示例
- SQL Server RTRIM()用法及代码示例
- SQL Server FLOOR()、CEILING()用法及代码示例
- SQL Server TAN()、COT()用法及代码示例
- SQL Server DEGREES()、RADIANS()用法及代码示例
- SQL Server ATN2()用法及代码示例
- SQL Server LOG10()用法及代码示例
- SQL Server LOG()用法及代码示例
- SQL Server ASCII()用法及代码示例
- SQL Server DIFFERENCE()用法及代码示例
- SQL Server IIF()用法及代码示例
注:本文由纯净天空筛选整理自khushboogoyal499大神的英文原创作品 NTILE() Function in SQL Server。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。