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 .
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_DIST
membutuhkan 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)