Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Şunlar için geçerlidir:Microsoft Fabric'te SQL analiz uç noktası ve Microsoft Fabric'teki Ambar
Fonksiyon, QUANTILE sayısalNULL olmayan değerlerden oluşan kesin bir sürekli nicelik döndürür. Bunu hem toplama işlevi hem de pencere (analiz) işlevi olarak kullanabilirsiniz:
- Toplam kullanım: Tüm grup için istenen quantili döndürür.
- Pencere kullanımı: Her bölüm için istenen kuantili döndürür ve satır düzeyindeki çıktıyı korur.
Transact-SQL söz dizimi kuralları
Syntax
Toplama işlevinin söz dizimi:
QUANTILE ( numeric_literal , numeric_expression )
Analiz işlevinin söz dizimi:
QUANTILE ( numeric_literal , numeric_expression ) OVER ( [ <partition_by_clause> ] )
Argümanlar
numeric_literal
Hesaplanacak kantili. Değer, kapsayıcı aralıkta olmalıdır.0.01.0 Örneğin, medyan veya 0.95 95. yüzde dilili hesaplamayı belirtin0.5.
numeric_expression
Quantili hesaplanan sayısal ifade. Desteklenen tam sayısal tipler int, bigint, smallint, tinyint, smallmoneynumericdecimal, , , , ve .money Desteklenen yaklaşık sayısal tipler ve real'dir.float
OVER yan tümcesi
partition_by_clause yan tümcesi tarafından FROM üretilen sonuç kümesini bölümlere ayırır ve işlev her bölüme uygulanır.
partition_by_clause belirtmezseniz, fonksiyon sorgu sonuç kümesinin tüm satırlarını tek bir bölüm olarak ele alır.
Bu OVER madde ORDER BY, ROWS, ya RANGE da için QUANTILEdesteklemez.
Daha fazla bilgi için bkz. SELECT - OVER yan tümcesi (Transact-SQL).
Dönüş türleri
float(53) döndürür.
Remarks
QUANTILE sıralı girdiNULL olmayan değerler üzerinde sürekli bir kuantil hesaplar. İstenen quantil iki değer arasında olduğunda, fonksiyon aralarında interpolasyon yapar. Sonuç giriş satırlarında bulunan bir değer olmayabilir.
Toplam formu QUANTILE(p, numeric_expression) ile eşdeğerdir PERCENTILE_CONT(p) WITHIN GROUP (ORDER BY numeric_expression). Analitik formun her bölüm içinde eşdeğer yüzde sürekli anlam sistemi vardır.
NULL değerleri yoksayılır. Tüm girdi değerleri NULLise veya hiçbir satır uygun değilse, QUANTILE döner NULL. Ne ANSI_WARNINGS zaman ON, değerleri ortadan NULL kaldırır ve standart toplam uyarı oluşturur.
Aynı girdi olmayanNULL değerler ve numeric_literal için QUANTILE aynı sonucu döndürür.
DISTINCT desteklenmez. Karakter, tarih, saat ve tarih saati ifadeleri desteklenmiyor.
Bu QUANTILE fonksiyon SQL Server, Azure SQL Veritabanı, Azure SQL Yönetilen Örneği veya SQL database in Fabric'te desteklenmemektedir.
Kullanım örneği
Dörtlükler, yüzdelikler ve diğer kesin dağılım sınırlarını kısa sözdizimiyle hesaplamak için kullanılır QUANTILE . Örneğin, plan için p90 talep miktarlarını, bölgeye göre p95 hizmet gecikmesini veya bir iş metriği için Q1, medyan ve Q3 değerlerini hesaplayın.
Examples
A. Toplam kuantilleri hesaplayın
Bu örnek, birinci dörtlük, medyan, üçüncü dörtlük ve 95. perdelik birimi hesaplar.
WITH Samples AS (
SELECT *
FROM (VALUES
(1), (NULL), (2), (3), (4), (5), (6), (7), (8), (13)
) AS v(value)
)
SELECT
QUANTILE(0.25, value) AS Q1_25thPercentile,
QUANTILE(0.50, value) AS Median_50thPercentile,
QUANTILE(0.75, value) AS Q3_75thPercentile,
QUANTILE(0.95, value) AS P95
FROM Samples;
B. Her grup için bir quantil hesaplayın
Bu örnek, her sigorta planı için yüzde 90'lık talep tutarını hesaplar.
WITH Claims AS (
SELECT *
FROM (VALUES
('Plan-A', 420.00),
('Plan-A', 500.00),
('Plan-A', 610.00),
('Plan-B', 250.00),
('Plan-B', 275.00),
('Plan-B', 310.00)
) AS v(plan_name, claim_amount)
)
SELECT
plan_name,
QUANTILE(0.90, claim_amount) AS P90ClaimAmount
FROM Claims
GROUP BY plan_name;
C. Tamamen NULL bir grup için NULL döndür
Bu örnek geri NULL dönür çünkü tüm nitelendirme değerleri 'dir.NULL
WITH CampaignDiscounts AS (
SELECT *
FROM (VALUES
(9001, NULL),
(9001, NULL),
(9001, NULL),
(9002, 10.00)
) AS v(campaign_id, discount_percent)
)
SELECT QUANTILE(0.90, discount_percent) AS P90DiscountPercent
FROM CampaignDiscounts
WHERE campaign_id = 9001;
D. Bölünmüş bir pencere quantili hesaplayın
Bu örnek, her hizmet için her istek satırına yüzde 95'lik gecikmeyi ekler.
WITH ServiceLatency AS (
SELECT *
FROM (VALUES
('Checkout', 'req-001', 180),
('Checkout', 'req-002', 220),
('Checkout', 'req-003', 260),
('Search', 'req-010', 90),
('Search', 'req-011', 110),
('Search', 'req-012', 130)
) AS v(service, request_id, latency_ms)
)
SELECT
service,
request_id,
latency_ms,
QUANTILE(0.95, latency_ms) OVER (PARTITION BY service) AS ServiceP95Latency
FROM ServiceLatency;