Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Berlaku untuk:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Sistem Platform Analitik (PDW)
Titik akhir analitik SQL di Microsoft Fabric
Gudang di Microsoft Fabric
Database SQL 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.
LEBIH ( <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 110kompatibilitas . 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 dalam artikel ini menggunakan database sampel AdventureWorks2025 atau AdventureWorksDW2025, yang dapat Anda unduh dari halaman beranda Sampel dan Proyek Komunitas Microsoft SQL Server.
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