當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


SQL Server NTILE()用法及代碼示例


在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
  1. 使用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
  2. 使用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
  3. 如果有人試圖運行使用NTILE()函數,無需number_expression:
    SELECT ID,
    NTILE () OVER (
    ORDER BY ID
    ) Group_number
    
    FROM geeks_demo; 

    輸出:
    它會拋出以下錯誤:

    The function 'NTILE' takes exactly 1 argument(s). 
    

相關用法


注:本文由純淨天空篩選整理自khushboogoyal499大神的英文原創作品 NTILE() Function in SQL Server。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。