Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Применимо к:Конечная точка аналитики SQL в Microsoft Fabric и хранилище в Microsoft Fabric
APPROX_MEDIAN Функция возвращает приблизительную медиану, или 50-й процентиль, нечисловыхNULL значений. Ее можно использовать как агрегатную функцию, так и функцию окна (аналитика):
- Совокупное использование: Возвращает приблизительную медиану для всей группы.
- Использование окна: возвращает приблизительную медиану для каждого раздела при сохранении выхода на уровне строки.
Соглашения о синтаксисе Transact-SQL
Syntax
Синтаксис функции агрегирования:
APPROX_MEDIAN ( numeric_expression )
Синтаксис функции аналитики:
APPROX_MEDIAN ( numeric_expression ) OVER ( [ <partition_by_clause> ] )
Аргументы
numeric_expression
Числовое выражение, приблизительная медиана которого вычисляется. Поддерживаемые точные числовые типы — int, bigint, smallint, numericsmallmoneytinyintdecimalи .money Поддерживаемые приближённые числовые типы — это float и real.
Предложение OVER
Partition_by_clause делит результирующий набор, созданный FROM предложением, на секции, и функция применяется к каждой секции.
Если не указать partition_by_clause, функция рассматривает все строки набора результатов запроса как одну порцию.
Оговорка OVER не поддерживает ORDER BY, ROWS, или RANGE для APPROX_MEDIAN.
Дополнительные сведения см. в предложении SELECT - OVER (Transact-SQL).
Типы возвращаемых данных
Возвращает float(53).
Замечания
APPROX_MEDIAN оценивает непрерывный 50-й процентиль упорядоченных невходныхNULL значений. Используйте MEDIAN , когда вам нужен точный результат.
Приблизительные результаты могут немного отличаться от точных MEDIAN и различаться между выполнениями из-за планов исполнения и параллельных путей слияния. Функция APPROX_MEDIAN не детерминирована. Дополнительные сведения см. в разделе детерминированные и недетерминированные функции.
NULL значения игнорируются. Если все входные значения равны NULL, или если ни одна строка не подходит, APPROX_MEDIAN возвращает NULL. Когда ANSI_WARNINGS , ONустранение NULL значений даёт стандартное агрегированное предупреждение.
APPROX_MEDIAN предназначен для снижения задержки и использования памяти по сравнению с точными MEDIAN вычислениями на больших наборах данных.
DISTINCT не поддерживается. Выражения персонажей, даты, времени и времени не поддерживаются.
Функция APPROX_MEDIAN доступна в Fabric Data Warehouse и в конечной точке аналитики SQL Fabric элементов. Эта APPROX_MEDIAN функция не поддерживается в SQL Server, База данных SQL Azure, Управляемый экземпляр SQL Azure или SQL Database in Fabric.
Сценарий использования
Используйте APPROX_MEDIAN для крупномасштабных дашбордов, исследовательского анализа и групповой отчётности, где точная оценка достаточна, а производительность запросов важнее, чем точная медиана. Распространённые примеры включают приблизительное медианное значение порядка, задержку сервиса и измерения телеметрии.
Examples
A. Вычислите приблизительную медиану совокупности
В этом примере оценивается медиана восьми значений.
SELECT APPROX_MEDIAN(value) AS ApproxMedianValue
FROM (VALUES (1), (2), (3), (4), (5), (6), (7), (8)) AS t(value);
Результат близок к точной медиане , 4.5но может немного варьироваться.
B. Вычислите приблизительную медиану для каждой группы
В этом примере оценивается медианная сумма заказа для каждого региона продаж.
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. Игнорировать значения NULL
В этом примере NULL значения игнорируются при оценке медианы.
SELECT APPROX_MEDIAN(value) AS ApproxMedianValue
FROM (VALUES (1), (2), (NULL), (3), (4)) AS t(value);
Если каждое входное значение равно NULL, функция возвращает NULL.
D. Вычислите приблизительную медиану разделённого окна
Этот пример добавляет приблизительную медианную задержку для каждого сервиса к каждой строке запроса.
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;