Aracılığıyla paylaş


APPROX_PERCENTILE_CONT (Transact-SQL)

Şunlar için geçerlidir: SQL Server 2022 (16.x) Azure SQL DatabaseAzure SQL Managed InstanceSQL analytics endpoint in Microsoft FabricWarehouse in Microsoft FabricSQL database in Microsoft Fabric

Bu işlev, yüzdebirlik değer ve sıralama belirtimini temel alan bir gruptaki değer kümesinden yaklaşık bir ilişkilendirme değeri döndürür. Bu yaklaşık bir işlev olduğundan, çıkış belirli bir güvene bağlı derece tabanlı hata içinde olacaktır. Bu işlev tarafından döndürülen yüzde birlik değer, sütun değerlerinin sürekli dağılımını temel alır ve sonuç ilişkilendirilmiş olur. Bu nedenle çıktı, veri kümesindeki değerlerden biri olmayabilir. Bu işlevin yaygın kullanım örneklerinden biri, veri aykırı değerleri kullanmaktan kaçınmaktır. Bu işlev, yavaş yanıt süresine sahip doğru yüzdebirlik değerle karşılaştırıldığında daha hızlı yanıtla göz ardı edilebilir hatanın kabul edilebilir olduğu büyük veri kümeleri için PERCENTILE_CONT alternatif olarak kullanılabilir.

Transact-SQL söz dizimi kuralları

Sözdizimi

APPROX_PERCENTILE_CONT (numeric_literal)
WITHIN GROUP (ORDER BY order_by_expression [ASC|DESC]) 

Tartışma

numeric_literal

İşlem için yüzdebirlik. Değer 0,0 ile 1,0 arasında olmalıdır.

order_by_expression

Yüzdebirlik değeri sıralamak ve hesaplamak için sayısal değerlerin listesini belirtir. Yalnızca bir order_by_expression izin verilir. Varsayılan sıralama düzeni artandır (ASC). İ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'dır. Yaklaşık sayısal türler float ve real'dir.

Dönüş türleri

float(53)

Açıklamalar

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

Yaklaşık yüzdebirlik işlevler KLL taslağını kullanır. Taslak, veri akışı okunarak oluşturulur. Kullanılan algoritma nedeniyle, bu işlev yaklaşık olmayan karşılık gelenden (PERCENTILE_CONT) daha az bellek gerektirir.

Bu işlev, değer tabanlı olmayan derece tabanlı hata garantileri sağlar. İşlev uygulaması en fazla 1,33% hatasını garanti eder.

Bilinen davranışlar

  • İşlevin çıkışı tüm yürütmelerde aynı olmayabilir. Bu işlevler için kullanılan algoritma, rastgele bir algoritma olan KLL taslağıdır . Taslak her oluşturulduğunda rastgele değerler seçilir. Bu işlevler değer tabanlı değil derece tabanlı hata garantileri sağlar.
  • İşlev uygulaması, 99% güven içinde en fazla 1,33% hata sınırlarını garanti eder.

Uyumluluk desteği

Uyumluluk düzeyi 110 ve üzeri altında, GRUP içinde ayrılmış bir anahtar sözcüktür. Daha fazla bilgi için bkz. ALTER DATABASE Uyumluluk Düzeyi (Transact-SQL).

Örnekler

Aşağıdaki örnek bir tablo oluşturur, bunu doldurur ve örnek bir sorgu yürütür.

SET NOCOUNT ON
GO
DROP TABLE IF EXISTS tblEmployee;
GO
CREATE TABLE tblEmployee (
EmplId INT IDENTITY(1,1) PRIMARY KEY CLUSTERED,
DeptId INT,
Salary int);
GO
INSERT INTO tblEmployee
VALUES (1, 31),(1, 33), (1, 18), (2, 25),(2, 35),(2, 10), (2, 10),(3,
1), (3,NULL), (4,NULL), (4,NULL);
GO
SELECT DeptId,
APPROX_PERCENTILE_CONT(0.10) WITHIN GROUP(ORDER BY Salary) AS 'P10',
APPROX_PERCENTILE_CONT(0.90) WITHIN GROUP(ORDER BY Salary) AS 'P90'
FROM tblEmployee
GROUP BY DeptId;