CUME_DIST (SQL Bertransaksi)
Berlaku untuk:
SQL Server (semua versi yang didukung)
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
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 yang 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 )
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 hasil klausa FROM yang diatur menjadi partisi, tempat fungsi diterapkan. Jika argumen partition_by_clause tidak ditentukan, CUME_DIST memperlakukan semua baris kumpulan hasil kueri sebagai grup tunggal. 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 Klausa OVER (Transact-SQL).
Tipe yang dikembalikan
float(53)
Keterangan
CUME_DIST mengembalikan rentang nilai yang lebih besar dari 0 dan kurang dari atau sama dengan 1. Nilai dasi selalu dievaluasi 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 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)
