Bagikan melalui


CUME_DIST (T-SQL)

Berlaku untuk: Titik akhir analitik SQL ServerAzure SQL Database Azure SQL Managed Instance Azure Synapse Analytics SQL di Microsoft Fabric Warehouse di Microsoft Fabric

Untuk SQL Server, fungsi ini menghitung distribusi kumulatif nilai dalam sekelompok nilai. Dengan kata lain, CUME_DIST menghitung posisi relatif dari nilai tertentu dalam sekelompok nilai. Dengan asumsi urutan naik, CUME_DIST nilai dalam baris r didefinisikan sebagai jumlah baris dengan nilai kurang dari atau sama dengan nilai tersebut dalam baris r, dibagi dengan jumlah baris yang dievaluasi dalam partisi atau kumpulan hasil kueri. CUME_DIST mirip PERCENT_RANK dengan fungsi .

Konvensi sintaks transact-SQL

Sintaks

CUME_DIST( )  
    OVER ( [ partition_by_clause ] order_by_clause )  

Argumen

OVER ( [ partition_by_clause ] order_by_clause)

partition_by_clause membagi hasil klausul FROM yang diatur menjadi partisi, tempat fungsi diterapkan. Jika argumen partition_by_clause tidak ditentukan, CUME_DIST memperlakukan semua baris kumpulan hasil kueri sebagai satu grup. order_by_clause menentukan urutan logis tempat operasi terjadi. CUME_DISTmembutuhkan order_by_clause. CUME_DIST tidak akan menerima <klausa> baris atau rentang sintaks OVER. Untuk informasi selengkapnya, lihat Klausul OVER (Transact-SQL).

Jenis yang dikembalikan

float(53)

Keterangan

CUME_DIST mengembalikan rentang nilai yang lebih besar dari 0 dan kurang dari atau sama dengan 1. Nilai ikatan selalu mengevaluasi ke nilai distribusi kumulatif yang sama. CUME_DIST menyertakan nilai NULL secara default dan memperlakukan nilai-nilai ini sebagai nilai serendah mungkin.

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

Contoh

Contoh ini menggunakan CUME_DIST fungsi untuk menghitung persentil gaji untuk setiap karyawan dalam departemen tertentu. CUME_DIST mengembalikan nilai yang mewakili persentase karyawan dengan gaji kurang dari atau sama dengan karyawan saat ini di departemen yang sama. Fungsi ini PERCENT_RANK menghitung peringkat persen dari gaji karyawan dalam departemen. Untuk mempartisi baris kumpulan hasil menurut departemen, contoh menentukan nilai partition_by_clause . Klausa ORDER BY dari klausa OVER secara logis mengurutkan baris di setiap partisi. Klausa ORDER BY dari pernyataan SELECT menentukan urutan tampilan tataan hasil.

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;  

Berikut set hasilnya.

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

PERCENT_RANK (T-SQL)