Aracılığıyla paylaş


NTILE (Transact-SQL)

Satırları sıralı bir disk bölümünde belirtilen sayıda gruplar dağıtır.Grupları tek tek başlayarak numaralandırılır.Her satır için NTILE, satırın ait olduğu grup sayısını verir.

Topic link iconTransact-SQL sözdizimi kuralları

NTILE (integer_expression)    OVER ( [ <partition_by_clause> ] < order_by_clause > )

Bağımsız değişkenler

  • integer_expression
    Is a positive integer constant expression that specifies the number of groups into which each partition must be divided.integer_expression can be of type int, or bigint.

    Not

    integer_expression can only reference columns in the PARTITION BY clause.integer_expression cannot reference columns listed in the current FROM clause.

  • <partition_by_clause>
    Sonuç olarak böler küme tarafından üretilen GELEN yan tümce hangi bölümlere RÜTBE işlev uygulanır.PARTITION BY sözdizimi için bkz: yan tümce (Transact-SQL).

  • < order_by_clause >
    NTILE değerleri bölümüne satır atandığı sırayı belirler.Daha fazla bilgi için bkz:ORDER BY yan tümce (Transact-SQL).Bir tamsayı sütun temsil olamaz, <order_by_clause> bir sıralama işlev.

Dönüş Türleri

bigint

Remarks

Varsa, bir bölümüne satır sayısı olarak bölünemiyor integer_expression, bu grupları farklı iki farklı boyutta bir üyesi tarafından neden olur. Daha büyük gruplara, daha küçük gruplar ÜZERINDE yan tümcesiyle belirtilen sırada önce gelir.10 Her satırlar, toplam satır sayısı ise 53 ve grup sayısı beştir, ilk üç grup 11 satır olacaktır ve kalan iki grubu olacaktır.Diğer taraftan toplam satır sayısını gruplarının sayısını bölünebilen, satırları eşit grupları arasında dağıtılacaktır.Örneğin, toplam satır sayısı 50'dir ve beş grup, her Demet 10 satır içerir.

Örnekler

C.Satır gruplara bölme

Aşağıdaki örnek, satırları dört gruplara böler.Toplam satır sayısını gruplarının sayısını bölünemiyor olduğundan, ilk grubu dört satır ve Kalan gruplar, sahip olduğunuz her üç satır.

USE AdventureWorks;
GO
SELECT c.FirstName, c.LastName
    ,NTILE(4) OVER(ORDER BY SalesYTD DESC) AS 'Quartile'
    ,s.SalesYTD, a.PostalCode
FROM Sales.SalesPerson s 
    INNER JOIN Person.Contact c 
        ON s.SalesPersonID = c.ContactID
    INNER JOIN Person.Address a 
        ON a.AddressID = c.ContactID
WHERE TerritoryID IS NOT NULL 
    AND SalesYTD <> 0;
GO

b.Sonuç bölme PARTITION BY'ı kullanarak küme

Aşağıdaki örnek ekler PARTITION BY bağımsız değişkeni örnek YANıT kodu Satırları, ilk olarak bölümlendirilir PostalCode ve sonra her dört gruplara ayrılır. PostalCode. Fark ORDER BY içinde OVER yan tümce siparişlerini NTILE ve ORDER BY ın SELECT Deyim, sonuç kümesi sıralar.

USE AdventureWorks;
GO
SELECT c.FirstName, c.LastName
    ,NTILE(4) OVER(PARTITION BY PostalCode ORDER BY SalesYTD DESC) AS 'Quartile'
    ,s.SalesYTD, a.PostalCode
FROM Sales.SalesPerson s 
    INNER JOIN Person.Contact c 
        ON s.SalesPersonID = c.ContactID
    INNER JOIN Person.Address a 
        ON a.AddressID = c.ContactID
WHERE TerritoryID IS NOT NULL 
    AND SalesYTD <> 0
ORDER BY LastName;
GO