在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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。