APPROX_MEDIAN (Transact-SQL)

A következőkre vonatkozik:SQL Analytics-végpont a Microsoft Fabricben és a Microsoft Fabric warehouse-ban

A APPROX_MEDIAN függvény egy közelítő mediánt, vagyis 50. percentilist ad vissza, amely nemNULL numerikus értékeket tartalmaz. Összesítő függvényként és ablakfüggvényként (analitikus) is használható:

  • Aggregált használat: Egy egész csoport közelítő mediánját adja.
  • Ablakhasználat: Minden partícióhoz hozzávetőleges mediánt ad vissza, miközben megőrzi a sorszintű kimenetet.

Transact-SQL szintaxis konvenciók

Szemantika

Aggregációs függvény szintaxisa:

APPROX_MEDIAN ( numeric_expression )

Elemzési függvény szintaxisa:

APPROX_MEDIAN ( numeric_expression ) OVER ( [ <partition_by_clause> ] )

Arguments

numeric_expression

Az a numerikus kifejezés, amelynek közelítő mediánját kiszámítjuk. A támogatott pontos numerikus típusok , intbigint, smallint, tinyint, smallmoneynumericdecimal, é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 .APPROX_MEDIAN

További információ: SELECT – OVER záradék (Transact-SQL).

Visszatérési típusok

Visszatér float(53).

Remarks

APPROX_MEDIAN becslése a rendezett, nemNULL bemeneti értékek folyamatos 50. percentilisét. Használd a MEDIAN-t, ha pontos eredményt szeretnél.

A közelítő eredmények kissé eltérhetnek a pontos MEDIAN eredményektől, és a végrehajtási tervek és párhuzamos összevonási útvonalak miatt eltérhetnek a végrehajtási tervek és a párhuzamos összeolvadási útvonalak miatt. APPROX_MEDIAN nemdeterminista. További információ: Determinisztikus és nem determinisztikus függvények.

NULL az értékek figyelmen kívül lesznek hagyva. Ha minden bemeneti érték , NULLvagy ha egyetlen sor sem minősül, APPROX_MEDIAN akkor visszaadja NULL. Amikor ANSI_WARNINGS az , ONaz értékek kizárása NULL a standard aggregált figyelmeztetést eredményezi.

APPROX_MEDIAN célja, hogy csökkentse a késleltetést és a memóriahasználatot a nagy adathalmazokon végzett pontos MEDIAN számításokhoz képest.

DISTINCT nem támogatott. A karakter, dátum, időpont és dátum kifejezések nem támogatottak.

A APPROX_MEDIAN funkció elérhető Fabric Data Warehouse-ben, valamint az SQL analitikai végpont Fabric elemekkel. Ez a APPROX_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

Nagy léptékű irányítópultok, feltáró elemzés és csoportosított jelentések használata APPROX_MEDIAN , ahol egy közeli becslés elegendő, és a lekérdezési teljesítmény fontosabb, mint egy pontosan medián. Gyakori példák a közelítő medián rendelési érték, a szolgáltatási késleltetés és a telemetriai mérések.

Példák

A. Kiszámítsunk egy összesített közelítő mediánt

Ez a példa a mediánt nyolc érték között becsüli.

SELECT APPROX_MEDIAN(value) AS ApproxMedianValue
FROM (VALUES (1), (2), (3), (4), (5), (6), (7), (8)) AS t(value);

Az eredmény közel áll pontosan a középponthoz, 4.5de kissé eltérhet.

B. Számolj ki egy közelítő mediánt minden csoporthoz

Ez a példa minden értékesítési régió medián rendelési összegét becsüli.

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,
    APPROX_MEDIAN(order_amount) AS ApproxMedianOrderAmount
FROM SalesOrders
GROUP BY region;

C. Figyelmen kívül hagyd a NULL értékeket

Ez a példa figyelmen kívül hagyja NULL az értékeket a medián becslésekor.

SELECT APPROX_MEDIAN(value) AS ApproxMedianValue
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 ablakközelítő mediánt

Ez a példa minden szolgáltatás közelítő 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,
    APPROX_MEDIAN(latency_ms) OVER (PARTITION BY service) AS ServiceApproxMedianLatency
FROM ServiceLatency;