PERCENTILE_CONT (SQL Bertransaksi)

Berlaku untuk:yes SQL Server (semua versi yang didukung) YesAzure SQL Database YesAzure SQL Managed Instance yesAzure Synapse Analytics yesAnalytics 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.

Topic link iconKonvensi 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

Lihat juga

PERCENTILE_DISC (SQL Bertransaksi)