PERCENT_RANK (SQL Bertransaksi)

Berlaku untuk:yes SQL Server (semua versi yang didukung) YesAzure SQL Database YesAzure SQL Managed Instance yesAzure Synapse Analytics

Menghitung peringkat relatif baris dalam sekelompok baris dalam SQL Server. Gunakan PERCENT_RANK untuk mengevaluasi posisi relatif nilai dalam kumpulan hasil kueri atau partisi. PERCENT_RANK mirip dengan fungsi CUME_DIST.

Sintaks

PERCENT_RANK( )  
    OVER ( [ partition_by_clause ] order_by_clause )  

Catatan

Untuk melihat sintaks transact-SQL untuk SQL Server 2014 dan yang lebih lama, lihat Dokumentasi versi sebelumnya.

Argumen

OVER ( [ partition_by_clause ] order_by_clause)
partition_by_clause membagi tataan hasil yang dihasilkan oleh klausul FROM menjadi partisi tempat fungsi diterapkan. Jika tidak ditentukan, fungsi memperlakukan semua baris hasil kueri yang ditetapkan sebagai grup tunggal. order_by_clause menentukan urutan logis tempat operasi dilakukan. Order_by_clause diperlukan. Klausa <> baris atau rentang sintaks OVER tidak dapat ditentukan dalam fungsi PERCENT_RANK. Untuk informasi selengkapnya, lihat Klausul OVER (SQL Transact).

Jenis Pengembalian

float(53)

Keterangan Umum

Rentang nilai yang dikembalikan oleh PERCENT_RANK lebih besar dari 0 dan kurang dari atau sama dengan 1. Baris pertama dalam set apa pun memiliki PERCENT_RANK 0. Nilai NULL disertakan secara default dan diperlakukan sebagai nilai serendah mungkin.

PERCENT_RANK bersifat nondeterministik. Untuk informasi selengkapnya, lihat Fungsi Deterministik dan Nondeterministik.

Contoh

Contoh berikut menggunakan fungsi CUME_DIST untuk menghitung persentil gaji untuk setiap karyawan dalam departemen tertentu. Nilai yang dikembalikan oleh fungsi CUME_DIST mewakili persentase karyawan yang memiliki gaji kurang dari atau sama dengan karyawan saat ini di departemen yang sama. Fungsi PERCENT_RANK menghitung peringkat gaji karyawan dalam departemen sebagai persentase. Klausa PARTITION BY ditentukan untuk mempartisi baris dalam hasil yang ditetapkan oleh departemen. Klausa ORDER BY dalam klausa OVER mengurutkan baris di setiap partisi. Klausa ORDER BY dalam pernyataan SELECT mengurutkan baris dalam seluruh tataan hasil.

USE AdventureWorks2012;  
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;  

Berikut adalah hasil yang ditetapkan.

  
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  
(15 row(s) affected)  

Lihat juga

CUME_DIST (SQL Bertransaksi)