PERCENTILE_CONT (T-SQL)
Berlaku untuk: Titik akhir analitik SQL Server Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Platform System (PDW) SQL di Microsoft Fabric Warehouse di Microsoft Fabric
Menghitung persentil berdasarkan distribusi berkelanjutan dari nilai kolom di Mesin Database SQL Server. Hasilnya diinterpolasi, dan mungkin tidak sama dengan nilai tertentu dalam kolom.
Sintaks
PERCENTILE_CONT ( numeric_literal )
WITHIN GROUP ( ORDER BY order_by_expression [ ASC | DESC ] )
OVER ( [ <partition_by_clause> ] )
Argumen
numeric_literal
Persentil untuk dihitung. Nilai harus berkisar antara 0.0
dan 1.0
.
DALAM GRUP ( PESAN MENURUT order_by_expression )
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, numeric, 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 FROM
klausul menjadi partisi tempat fungsi persentil diterapkan. Untuk informasi selengkapnya, lihat SELECT - OVER Clause. Klausa ORDER BY
dan <rows or range clause>
OVER
sintaks tidak dapat ditentukan dalam PERCENTILE_CONT
fungsi.
Jenis yang dikembalikan
float(53)
Dukungan kompatibilitas
WITHIN GROUP
adalah kata kunci yang dipesan, dimulai dengan tingkat 110
kompatibilitas . Untuk informasi selengkapnya, lihat MENGUBAH Tingkat Kompatibilitas DATABASE.
Keterangan
Setiap null dalam himpunan data diabaikan.
PERCENTILE_CONT
bersifat nondeterministik. Untuk informasi selengkapnya, lihat Fungsi Deterministik dan Nondeterministik.
Contoh
Sampel kode Transact-SQL dalam artikel ini menggunakan AdventureWorks2022
database sampel atau AdventureWorksDW2022
, yang dapat Anda unduh dari halaman beranda Sampel Microsoft SQL Server dan Proyek Komunitas.
J. Menemukan gaji karyawan median per departemen
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 himpunan data, sementara PERCENTILE_DISC
selalu mengembalikan nilai aktual dari set.
USE AdventureWorks2022;
GO
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 hasil parsial yang ditetapkan.
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
Contoh: Azure Synapse Analytics and Analytics Platform System (PDW)
Contoh berikut menggunakan AdventureWorksDW2012
database sampel.
B. Menemukan gaji karyawan median per departemen
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 himpunan data, sementara PERCENTILE_DISC
selalu mengembalikan nilai aktual dari set.
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 hasil parsial yang ditetapkan.
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