Aracılığıyla paylaş


PERCENTILE_CONT (Transact-SQL)

Şunlar için geçerlidir:SQL ServerAzure SQL VeritabanıAzure SQL Yönetilen ÖrneğiAzure Synapse AnalyticsAnaliz Platformu Sistemi (PDW)Microsoft Fabric'teki SQL analiz uç noktasıMicrosoft Fabric'teki ambarMicrosoft Fabric'teki SQL veritabanı

SQL Server Veritabanı Motoru'ndaki sütun değerinin sürekli dağılımına dayalı bir yüzdelik hesaplar. Sonuç interpolasyonlu olur ve sütundaki belirli değerlerin hiçbirine eşit olmayabilir.

Transact-SQL söz dizimi kuralları

Sözdizimi

PERCENTILE_CONT ( numeric_literal )
    WITHIN GROUP ( ORDER BY order_by_expression [ ASC | DESC ] )
    OVER ( [ <partition_by_clause> ] )

Arguments

numeric_literal

İşlem için yüzdebirlik. Değer ile 0.0arasında 1.0 değişmelidir.

GRUP IÇINDE (order_by_expression ILE DÜZENLENIR)

Yüzdebirlik değeri sıralamak ve hesaplamak için sayısal değerlerin listesini belirtir. Yalnızca bir order_by_expression izin verilir. İfade, başka veri türlerine izin verilmeden tam veya yaklaşık bir sayısal türe değerlendirilmelidir. Tam sayısal türler int, bigint, smallint, tinyint, numeric, bit, decimal, smallmoney ve money'dir. Yaklaşık sayısal tipler float ve real'dir. Varsayılan sıralama düzeni artan düzendedir.

SON ( <partition_by_clause> )

Madde FROM tarafından üretilen sonuç kümesini, yüzde yüzdelik fonksiyonunun uygulandığı bölümlere böler. Daha fazla bilgi için bkz. SELECT - OVER Maddesi. Sözdiziminin ORDER BY ve <rows or range clause>OVER sözdizimi bir PERCENTILE_CONT fonksiyonda belirtilemez.

Dönüş türleri

float(53)

Uyumluluk desteği

WITHIN GROUP uyumluluk seviyesinden 110başlayarak ayrılmış bir anahtar kelimedir. Daha fazla bilgi için ALTER DATABASE Uyumluluk Seviyesine bakınız.

Açıklamalar

Veri kümesindeki tüm null değerler yoksayılır.

PERCENTILE_CONT belirsiz değildir. Daha fazla bilgi için bkz . Deterministic ve Nondeterministic Functions.

Örnekler

Bu makaledeki kod örnekleri, AdventureWorks2025 giriş sayfasından indirebileceğiniz AdventureWorksDW2025 veya örnek veritabanını kullanır.

A. Departman başına medyan çalışan maaşını bulun

Aşağıdaki örnek PERCENTILE_CONT , her departmanda medyan çalışan maaşını bulmak için ve PERCENTILE_DISC kullanır. Bu fonksiyonlar aynı değeri vermeyebilir. PERCENTILE_CONT veri setinde var olup olmayabilecek uygun değeri interpolasyon yapar ve PERCENTILE_DISC her zaman kümeden gerçek bir değer döndürür.

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;

Kısmi bir sonuç kümesi aşağıdadır.

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

Örnekler: Azure Synapse Analytics ve Analytics Platform Sistemi (PDW)

Aşağıdaki örnek örnek veritabanını kullanır AdventureWorksDW2012 .

B. Departman başına medyan çalışan maaşını bulun

Aşağıdaki örnek PERCENTILE_CONT , her departmanda medyan çalışan maaşını bulmak için ve PERCENTILE_DISC kullanır. Bu fonksiyonlar aynı değeri vermeyebilir. PERCENTILE_CONT veri setinde var olup olmayabilecek uygun değeri interpolasyon yapar ve PERCENTILE_DISC her zaman kümeden gerçek bir değer döndürür.

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;

Kısmi bir sonuç kümesi aşağıdadır.

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