Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A következőkre vonatkozik:SQL Analytics-végpont a Microsoft Fabricben és a Microsoft Fabric warehouse-ban
A MEDIAN függvény a nemNULL numerikus értékek pontos mediánját, vagyis 50. percentilisét adja vissza. Összesítő függvényként és ablakfüggvényként (analitikus) is használható:
- Aggregált használat: Egy egész csoport mediánját adja vissza.
- Ablakhasználat: Minden partíció mediánját adja vissza, miközben megőrzi a sorszintű kimenetet.
Transact-SQL szintaxis konvenciók
Szemantika
Aggregációs függvény szintaxisa:
MEDIAN ( numeric_expression )
Elemzési függvény szintaxisa:
MEDIAN ( numeric_expression ) OVER ( [ <partition_by_clause> ] )
Arguments
numeric_expression
Az a numerikus kifejezés, amelynek mediánját kiszámítják. A támogatott pontos numerikus típusok , intbigint, smallint, tinyint, bitsmallmoneynumericdecimalés .money A támogatott közelítő numerikus típusok és floatreal.
OVER záradék
A partition_by_clause a záradék által FROM létrehozott eredményhalmazt partíciókra osztja, és a függvényt minden partícióra alkalmazza a rendszer.
Ha nem határozod meg partition_by_clause, a függvény a lekérdezés eredményhalmazának minden sorát egyetlen partícióként kezeli.
A OVER klauda nem támogatja ORDER BY, ROWS, vagy RANGE .MEDIAN
További információ: SELECT – OVER záradék (Transact-SQL).
Visszatérési típusok
Visszatér float(53).
Remarks
MEDIAN kiszámítja a rendezett, nemNULL bemeneti értékek folyamatos 50. percentilisét. Páros számú bemeneti érték esetén a függvény interpolál a két középső érték között. Az eredmény nem feltétlenül olyan érték, amely a bemeneti sorokban létezik.
MEDIAN az aggregált használat megfelelője PERCENTILE_CONT(0.5) WITHIN GROUP (ORDER BY numeric_expression) . Az analitikus forma minden partíción belül ekvivalens percentilis-folyamatos szemantika van.
NULL az értékek figyelmen kívül lesznek hagyva. Ha minden bemeneti érték , NULLvagy ha egyetlen sor sem minősül, MEDIAN akkor visszaadja NULL. Amikor ANSI_WARNINGS az , ONaz értékek kizárása NULL a standard aggregált figyelmeztetést eredményezi.
MEDIAN nem determinisztika, mert a párhuzamos végrehajtási útvonalakon végzett lebegőpontos számítások kis eltéréseket okozhatnak. További információ: Determinisztikus és nem determinisztikus függvények.
DISTINCT nem támogatott. A karakter, dátum, időpont és dátum kifejezések nem támogatottak.
A MEDIAN funkció elérhető Fabric Data Warehouse-ben, valamint az SQL analitikai végpont Fabric elemekkel. Ez a MEDIAN funkció nem támogatja az SQL Server-ben, Azure SQL Database-ban, Azure SQL Managed Instance-ban vagy az SQL database-ben a Fabric-ben.
Felhasználási eset
Használat MEDIAN , amikor az átlag szokatlanul magas vagy alacsony értékek miatt torzulhat. Például a medián sorrend érték, a válaszidő vagy a igény összege gyakran egy tipikus megfigyelést tisztábban képvisel, mint az aritmetikai átlag. Az aggregált űrlap összefoglalja a csoportokat, az analitikus űrlap pedig minden részletsorhoz egy partíciós mércét ad hozzá.
Példák
A. Kiszámítsunk egy aggregált mediánt
Ez a példa a nyolc érték mediánját adja vissza. Mivel a bemenetnek páros számú sora van, MEDIAN 4 és 5 között interpolál.
SELECT MEDIAN(value) AS MedianValue
FROM (VALUES (1), (2), (3), (4), (5), (6), (7), (8)) AS t(value);
Az eredmény: 4.5.
B. Számítsunk ki mediánt minden csoporthoz
Ez a példa minden értékesítési régió medián rendelési összegét számolja ki.
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. Figyelmen kívül hagyd a NULL értékeket
Ez a példa figyelmen kívül hagyja a bemenetet NULL , és a mediánt a maradék értékekből számolja ki.
SELECT MEDIAN(value) AS MedianValue
FROM (VALUES (1), (2), (NULL), (3), (4)) AS t(value);
Ha minden bemeneti érték , NULLa függvény visszaadja NULL.
D. Számolj ki egy partíciós ablakmediánt
Ez a példa minden szolgáltatás medián késleltetését minden kéréssorhoz hozzáadja.
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;