PERCENTILE_DISC (Transact-SQL)

Berlaku untuk:yes SQL Server (semua versi yang didukung) YesAzure SQL Database YesAzure SQL Managed Instance yesAzure Synapse Analytics Analytics yesPlatform System (PDW)

Menghitung persentil tertentu untuk nilai yang diurutkan di seluruh set baris atau dalam partisi rowset yang berbeda di SQL Server. Untuk nilai persentil tertentu P, PERCENTILE_DISC mengurutkan nilai ekspresi dalam klausa ORDER BY. Kemudian mengembalikan nilai dengan nilai CUME_DIST terkecil yang diberikan (sehubungan dengan spesifikasi pengurutan yang sama) yang lebih besar dari atau sama dengan P. Misalnya, PERCENTILE_DISC (0,5) akan menghitung persentil ke-50 (yaitu, median) ekspresi. PERCENTILE_DISC menghitung persentil berdasarkan distribusi diskrit nilai kolom. Hasilnya sama dengan nilai kolom tertentu.

Article link iconKonvensi Sintaks Transact-SQL (Transact-SQL)

Sintaks

PERCENTILE_DISC ( 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

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 untuk mengurutkan dan menghitung persentil. Hanya satu order_by_expression yang diizinkan. Urutan sortir default adalah menaik. Daftar nilai dapat berupa salah satu jenis data yang valid untuk operasi pengurutan.

OVER (<partition_by_clause>)**
Membagi hasil klausa FROM yang ditetapkan menjadi partisi. Fungsi persentil diterapkan ke partisi ini. Untuk informasi selengkapnya, lihat Klausul OVER (Transact-SQL). Klausa <> ORDER BY dan <baris atau klausa>rentang tidak dapat ditentukan dalam fungsi PERCENTILE_DISC.

Jenis Kembalian

Jenis pengembalian ditentukan oleh jenis order_by_expression .

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 (Transact-SQL).

Keterangan Umum

Setiap null dalam himpunan data diabaikan.

PERCENTILE_DISC bersifat nondeterministik. Untuk informasi selengkapnya, lihat Fungsi Deterministik dan Nondeterministik.

Contoh

Contoh sintaks dasar

Contoh berikut menggunakan PERCENTILE_CONT dan PERCENTILE_DISC untuk menemukan gaji karyawan median setiap departemen. Mereka mungkin tidak mengembalikan nilai yang sama:

  • PERCENTILE_CONT mengembalikan nilai yang sesuai, meskipun tidak ada dalam himpunan data.
  • PERCENTILE_DISC mengembalikan nilai yang ditetapkan aktual.
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


Kontrol Dokumen 16.8269 16.8269 Teknik 34.375 32.6923 Eksekutif 54.32695 48.5577 Sumber Daya Manusia 17.427850 16.5865

Contoh: Azure Synapse Analytics and Analytics Platform System (PDW)

Contoh sintaks dasar

Contoh berikut menggunakan PERCENTILE_CONT dan PERCENTILE_DISC untuk menemukan gaji karyawan median setiap departemen. Mereka mungkin tidak mengembalikan nilai yang sama:

  • PERCENTILE_CONT mengembalikan nilai yang sesuai, meskipun tidak ada dalam himpunan data.
  • PERCENTILE_DISC mengembalikan nilai yang ditetapkan aktual.
-- 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


Kontrol Dokumen 16.826900 16.8269
Teknik 34.375000 32.6923
Sumber Daya Manusia 17.427850 16.5865
Pengiriman dan Penerimaan 9.250000 9.0000

Lihat juga

PERCENTILE_CONT (Transact-SQL)