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, MEDIAN sayısal olmayanNULL değerlerin tam medianını, yani 50. perdelikli döndürür. Bunu hem toplama işlevi hem de pencere (analiz) işlevi olarak kullanabilirsiniz:
- Toplam kullanım: Tüm bir grubun medyanını döndürür.
- Pencere kullanımı: Her bölüm için medyanını 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:
MEDIAN ( numeric_expression )
Analiz işlevinin söz dizimi:
MEDIAN ( numeric_expression ) OVER ( [ <partition_by_clause> ] )
Argümanlar
numeric_expression
Medyanı hesaplanan sayısal ifade. Desteklenen tam sayısal tipler int, bigint, smallint, tinyint, bitsmallmoneynumericdecimalve .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 MEDIANdesteklemez.
Daha fazla bilgi için bkz. SELECT - OVER yan tümcesi (Transact-SQL).
Dönüş türleri
float(53) döndürür.
Remarks
MEDIAN sıralanmış girdiNULL olmayan değerlerin sürekli 50. yüzde birliğini hesaplar. Çift sayıda giriş değeri için, fonksiyon iki orta değer arasında interpolasyon yapar. Sonuç giriş satırlarında bulunan bir değer olmayabilir.
MEDIAN toplu kullanım için PERCENTILE_CONT(0.5) WITHIN GROUP (ORDER BY numeric_expression) eşdeğerdir. 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, MEDIAN döner NULL. Ne ANSI_WARNINGS zaman ON, değerleri ortadan NULL kaldırır ve standart toplam uyarı oluşturur.
MEDIAN deterministik değildir çünkü paralel yürütme yollarındaki kayan nokta hesaplamaları küçük farklılıklar üretebilir. Daha fazla bilgi için bkz. Deterministik ve deterministik olmayan fonksiyonlar.
DISTINCT desteklenmez. Karakter, tarih, saat ve tarih saati ifadeleri desteklenmiyor.
Fonksiyon, MEDIAN Fabric Data Warehouse ve Fabric öğelerin SQL analitik uç noktasında mevcuttur. Bu MEDIAN fonksiyon SQL Server, Azure SQL Veritabanı, Azure SQL Yönetilen Örneği veya SQL database in Fabric'te desteklenmemektedir.
Kullanım örneği
Bir ortalamanın alışılmadık derecede yüksek veya düşük değerlerle bozulabileceği durumlarda kullanılır MEDIAN . Örneğin, medyan sıralama değeri, yanıt süresi veya talep miktarı genellikle tipik bir gözlemi aritmetik ortalamadan daha net temsil eder. Toplu form grupları özetler, analitik form ise her detay satırına bir bölüm kıyaslaması ekler.
Examples
A. Toplam medyan hesaplayın
Bu örnek ortalama sekiz değeri döndürür. Girdi çift sayıda satır olduğundan, MEDIAN 4 ile 5 arasında interpolasyon yapar.
SELECT MEDIAN(value) AS MedianValue
FROM (VALUES (1), (2), (3), (4), (5), (6), (7), (8)) AS t(value);
Sonuç 4.5'dır.
B. Her grup için bir medyan hesaplayın
Bu örnek, her satış bölgesi için medyan sipariş miktarını hesaplar.
WITH SalesOrders AS (
SELECT *
FROM (VALUES
('North', 120.00),
('North', 220.00),
('North', 320.00),
('South', 150.00),
('South', 250.00),
('South', 450.00)
) AS v(region, order_amount)
)
SELECT
region,
MEDIAN(order_amount) AS MedianOrderAmount
FROM SalesOrders
GROUP BY region;
C. NULL değerlerini görmezden gelin
Bu örnek, girdiyi NULL görmezden gelir ve kalan değerlerden medyanı hesaplar.
SELECT MEDIAN(value) AS MedianValue
FROM (VALUES (1), (2), (NULL), (3), (4)) AS t(value);
Her giriş değeri ise NULLfonksiyon döndürür NULL.
D. Bölünmüş bir pencere medyanı hesaplayın
Bu örnek, her servisin medyan gecikmesini her istek satırına 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,
MEDIAN(latency_ms) OVER (PARTITION BY service) AS ServiceMedianLatency
FROM ServiceLatency;