Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Van toepassing op:SQL Analytics-eindpunt in Microsoft Fabric en Warehouse in Microsoft Fabric
De APPROX_MEDIAN functie geeft een benaderende mediaan, of 50e percentiel, van niet-numeriekeNULL waarden terug. U kunt deze gebruiken als een statistische functie en een vensterfunctie (analysefunctie):
- Geaggregeerd gebruik: Geeft een benaderende mediaan terug voor een hele groep.
- Venstergebruik: Geeft een benaderende mediaan voor elke partitie terug, terwijl de uitvoer op rijniveau behouden blijft.
Transact-SQL syntaxis-conventies
Syntax
Syntaxis van aggregatiefunctie:
APPROX_MEDIAN ( numeric_expression )
Syntaxis van analysefunctie:
APPROX_MEDIAN ( numeric_expression ) OVER ( [ <partition_by_clause> ] )
Argumenten
numeric_expression
De numerieke uitdrukking waarvan de benaderde mediaan wordt berekend. Ondersteunde exacte numerieke types zijn int, bigint, , smallint, tinyint, smallmoneynumericdecimalen money. Ondersteunde benaderende numerieke types zijn float en real.
OVER-component
De partition_by_clause verdeelt de resultatenset die door de FROM component wordt geproduceerd in partities en de functie wordt toegepast op elke partitie.
Als je partition_by_clause niet specificeert, behandelt de functie alle rijen van de zoekresultatenset als één enkele partitie.
De OVER clausule ondersteunt ORDER BY, ROWS, of RANGE voor APPROX_MEDIANniet.
Zie SELECT - OVER-component (Transact-SQL)voor meer informatie.
Retourtypen
Retourneert float(53).
Remarks
APPROX_MEDIAN schat het continue 50e percentiel van de geordende niet-invoerwaardenNULL . Gebruik MEDIAN wanneer je een exact resultaat nodig hebt.
Berende resultaten kunnen enigszins verschillen van exacte MEDIAN resultaten en kunnen variëren tussen uitvoeringen door uitvoeringsplannen en parallelle samenvoegingspaden.
APPROX_MEDIAN is niet-deterministisch. Zie Deterministische en niet-deterministische functiesvoor meer informatie.
NULL waarden worden genegeerd. Als alle invoerwaarden zijn NULL, of als geen rijen kwalificeren, APPROX_MEDIAN geeft NULL. Wanneer ANSI_WARNINGS , ONproduceert het elimineren NULL van waarden de standaard aggregatiewaarschuwing.
APPROX_MEDIAN is bedoeld om latentie en geheugengebruik te verminderen in vergelijking met exacte MEDIAN berekeningen op grote datasets.
DISTINCT wordt niet ondersteund. Karakter-, datum-, tijd- en datum-tijd-expressies worden niet ondersteund.
De APPROX_MEDIAN functie is beschikbaar in Fabric Data Warehouse en het SQL-analyse-eindpunt van Fabric items. De APPROX_MEDIAN functie wordt niet ondersteund in SQL Server, Azure SQL Database, Azure SQL Managed Instance of SQL Database in Fabric.
Gebruiksituatie
Gebruik APPROX_MEDIAN voor grootschalige dashboards, verkennende analyses en gegroepeerde rapportages waarbij een nauwkeurige schatting voldoende is en queryprestaties belangrijker zijn dan een exacte mediaan. Veelvoorkomende voorbeelden zijn een benaderende mediane orderwaarde, servicelatentie en telemetriemetingen.
Examples
Eén. Bereken een geaggregeerde benaderende mediaan
Dit voorbeeld schat de mediaan van acht waarden.
SELECT APPROX_MEDIAN(value) AS ApproxMedianValue
FROM (VALUES (1), (2), (3), (4), (5), (6), (7), (8)) AS t(value);
Het resultaat ligt dicht bij de exacte mediaan van 4.5, maar kan licht variëren.
B. Bereken een benaderende mediaan voor elke groep
Dit voorbeeld schat het mediane orderbedrag voor elke verkoopregio.
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. Negeer NULL-waarden
Dit voorbeeld negeert NULL waarden bij het schatten van de mediaan.
SELECT APPROX_MEDIAN(value) AS ApproxMedianValue
FROM (VALUES (1), (2), (NULL), (3), (4)) AS t(value);
Als elke invoerwaarde is NULL, geeft de functie .NULL
D. Bereken een gepartitioneerde venster-benadering van de mediaan
Dit voorbeeld voegt de geschatte mediane latentie voor elke service toe aan elke verzoekrij.
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;