Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Применимо к:Конечная точка аналитики 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;