PERCENTILE_CONT (T-SQL)
Berlaku untuk:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse Analytics AnalyticsPlatform System (PDW)Titik akhir analitik SQL di Microsoft FabricWarehouse 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.
Sintaksis
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 (12.x) dan versi yang lebih lama, lihat Dokumentasi versi sebelumnya.
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, yang dapat Anda unduh dari 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
Konten terkait
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk