Aracılığıyla paylaş


PERCENT_RANK (Transact-SQL)

Şunlar için geçerlidir:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsMicrosoft Fabric'te SQL analitiği uç noktasıMicrosoft Fabric'te DepoMicrosoft Fabric'te SQL veritabanı

SQL Server'da bir sıra grubu içindeki bir satırın göreli sıralamasını hesaplar. Bir sorgu sonuç kümesi veya bölüm içindeki bir değerin göreli durumunu değerlendirmek için kullanılır PERCENT_RANK . PERCENT_RANK CUME_DIST fonksiyonuna benzer.

Sözdizimi

PERCENT_RANK( )
    OVER ( [ partition_by_clause ] order_by_clause )

Arguments

OVER ( [ partition_by_clause ] order_by_clause )

İlk parametre partition_by_clause, cümlenin FROM ürettiği sonuç kümesini, fonksiyonun uygulandığı bölümlere böler. Belirtilmezse, işlev sorgu sonuç kümesinin tüm satırlarını tek bir grup olarak ele alır. İkinci parametre order_by_clause, işlemin mantıksal sırasını belirler. order_by_clause zorunludur. Sözdizimi <rows or range clause>OVER bir PERCENT_RANK fonksiyonda belirtilemez. Daha fazla bilgi için bkz. SELECT - OVER Maddesi.

Dönüş türleri

float(53)

Açıklamalar

Döndürülen PERCENT_RANK değerler aralığı daha büyük 0 , daha küçük veya eşittir 1. Herhangi bir setin PERCENT_RANK ilk satırında bir ' 0var. NULL Değerler varsayılan olarak dahil edilir ve mümkün olan en düşük değerler olarak kabul edilir.

PERCENT_RANK belirsiz değildir. Daha fazla bilgi için bkz. Deterministik ve deterministik olmayan fonksiyonlar.

Örnekler

Bu makaledeki kod örnekleri, AdventureWorks2025 giriş sayfasından indirebileceğiniz AdventureWorksDW2025 veya örnek veritabanını kullanır.

Aşağıdaki örnek, belirli bir departmandaki her çalışan için maaş yüzdeliğini hesaplama fonksiyonunu kullanır CUME_DIST . Fonksiyon tarafından CUME_DIST iade edilen değer, aynı departmandaki mevcut çalışanın maaşı altında veya eşit olan çalışanların yüzdesini temsil eder. Bu PERCENT_RANK fonksiyon, bir departmandaki çalışanın maaşının derecesini yüzde olarak hesaplar. Bu madde, PARTITION BY sonuç kümesindeki satırları bölümlere göre bölmek için belirlenmiştir. Maddedeki ORDER BY cümle OVER her bölümdeki satır sıralarını düzenler. Cümledeki ORDER BY cümleSELECT, tüm sonuç kümesindeki satırları sıralar.

USE AdventureWorks2022;
GO

SELECT Department,
    LastName,
    Rate,
    CUME_DIST() OVER (PARTITION BY Department ORDER BY Rate) AS CumeDist,
    PERCENT_RANK() OVER (PARTITION BY Department ORDER BY Rate) AS PctRank
FROM HumanResources.vEmployeeDepartmentHistory AS edh
INNER JOIN HumanResources.EmployeePayHistory AS e
    ON e.BusinessEntityID = edh.BusinessEntityID
WHERE Department IN (N'Information Services', N'Document Control')
ORDER BY Department, Rate DESC;

Sonuç kümesi aşağıdadır.

Department             LastName               Rate              CumeDist           PctRank
---------------------- ---------------------- ----------------- ------------------ ------------------
Document Control       Arifin                 17.7885           1                  1
Document Control       Norred                 16.8269           0.8                0.5
Document Control       Kharatishvili          16.8269           0.8                0.5
Document Control       Chai                   10.25             0.4                0
Document Control       Berge                  10.25             0.4                0
Information Services   Trenary                50.4808           1                  1
Information Services   Conroy                 39.6635           0.9                0.888888888888889
Information Services   Ajenstat               38.4615           0.8                0.666666666666667
Information Services   Wilson                 38.4615           0.8                0.666666666666667
Information Services   Sharma                 32.4519           0.6                0.444444444444444
Information Services   Connelly               32.4519           0.6                0.444444444444444
Information Services   Berg                   27.4038           0.4                0
Information Services   Meyyappan              27.4038           0.4                0
Information Services   Bacon                  27.4038           0.4                0
Information Services   Bueno                  27.4038           0.4                0