PERCENTILE_CONT (SQL Bertransaksi)
Berlaku untuk:
SQL Server (semua versi yang didukung)
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Analytics Platform System (PDW)
Menghitung persentil berdasarkan distribusi berkelanjutan dari nilai kolom dalam SQL Server. Hasilnya diinterpolasi dan mungkin tidak sama dengan salah satu nilai tertentu dalam kolom.
Konvensi Sintaksis SQL Transaksi (SQL Transact)
Sintaks
PERCENTILE_CONT ( numeric_literal )
WITHIN GROUP ( ORDER BY order_by_expression [ ASC | DESC ] )
OVER ( [ <partition_by_clause> ] )
Catatan
Untuk melihat sintaks transact-SQL untuk SQL Server 2014 dan yang lebih lama, lihat Dokumentasi versi sebelumnya.
Argumen
numeric_literal
Persentil untuk komputasi. Nilai harus berkisar antara 0,0 dan 1,0.
DALAM GRUP ( ORDER BY order_by_expression [ ASC | DESC ])
Menentukan daftar nilai numerik untuk mengurutkan dan menghitung persentil. Hanya satu order_by_expression yang diizinkan. Ekspresi harus mengevaluasi ke jenis numerik yang tepat atau perkiraan, tanpa jenis data lain yang diizinkan. Jenis numerik yang tepat adalah int, bigint, smallint, tinyint, numerik, bit, desimal, smallmoney, dan uang. Perkiraan jenis numerik adalah float dan nyata. Urutan sortir default adalah menaik.
OVER (<partition_by_clause>)
Membagi tataan hasil yang dihasilkan oleh klausul FROM menjadi partisi tempat fungsi persentil diterapkan. Untuk informasi selengkapnya, lihat Klausul OVER (SQL Transact). Klausa <> ORDER BY dan <baris atau klausa> rentang sintaks OVER tidak dapat ditentukan dalam fungsi PERCENTILE_CONT.
Jenis Pengembalian
float(53)
Dukungan Kompatibilitas
Di bawah tingkat kompatibilitas 110 dan yang lebih tinggi, WITHIN GROUP adalah kata kunci yang dicadangkan. Untuk informasi selengkapnya, lihat MENGUBAH Tingkat Kompatibilitas DATABASE (SQL Transact).
Keterangan Umum
Setiap null dalam himpunan data diabaikan.
PERCENTILE_CONT bersifat nondeterministik. Untuk informasi selengkapnya, lihat Fungsi Deterministik dan Nondeterministik.
Contoh
A. Contoh sintaks dasar
Contoh berikut menggunakan PERCENTILE_CONT dan PERCENTILE_DISC untuk menemukan gaji karyawan median di setiap departemen. Fungsi-fungsi ini mungkin tidak mengembalikan nilai yang sama. PERCENTILE_CONT menginterpolasi nilai yang sesuai, yang mungkin atau mungkin tidak ada dalam kumpulan data, PERCENTILE_DISC selalu mengembalikan nilai aktual dari kumpulan.
USE AdventureWorks2012;
SELECT DISTINCT Name AS DepartmentName
,PERCENTILE_CONT(0.5) WITHIN GROUP (ORDER BY ph.Rate)
OVER (PARTITION BY Name) AS MedianCont
,PERCENTILE_DISC(0.5) WITHIN GROUP (ORDER BY ph.Rate)
OVER (PARTITION BY Name) AS MedianDisc
FROM HumanResources.Department AS d
INNER JOIN HumanResources.EmployeeDepartmentHistory AS dh
ON dh.DepartmentID = d.DepartmentID
INNER JOIN HumanResources.EmployeePayHistory AS ph
ON ph.BusinessEntityID = dh.BusinessEntityID
WHERE dh.EndDate IS NULL;
Berikut adalah tataan hasil parsial.
DepartmentName MedianCont MedianDisc
-------------------- ---------- ----------
Document Control 16.8269 16.8269
Engineering 34.375 32.6923
Executive 54.32695 48.5577
Human Resources 17.427850 16.5865
B. Contoh sintaks dasar
Contoh berikut menggunakan PERCENTILE_CONT dan PERCENTILE_DISC untuk menemukan gaji karyawan median di setiap departemen. Fungsi-fungsi ini mungkin tidak mengembalikan nilai yang sama. PERCENTILE_CONT menginterpolasi nilai yang sesuai, yang mungkin atau mungkin tidak ada dalam kumpulan data, PERCENTILE_DISC selalu mengembalikan nilai aktual dari kumpulan.
-- Uses AdventureWorks
SELECT DISTINCT DepartmentName
,PERCENTILE_CONT(0.5) WITHIN GROUP (ORDER BY BaseRate)
OVER (PARTITION BY DepartmentName) AS MedianCont
,PERCENTILE_DISC(0.5) WITHIN GROUP (ORDER BY BaseRate)
OVER (PARTITION BY DepartmentName) AS MedianDisc
FROM dbo.DimEmployee;
Berikut adalah tataan hasil parsial.
DepartmentName MedianCont MedianDisc
-------------------- ---------- ----------
Document Control 16.826900 16.8269
Engineering 34.375000 32.6923
Human Resources 17.427850 16.5865
Shipping and Receiving 9.250000 9.0000