Заметка
Доступ к этой странице требует авторизации. Вы можете попробовать войти в систему или изменить каталог.
Доступ к этой странице требует авторизации. Вы можете попробовать сменить директорию.
Применимо к:SQL Server
База данных Azure SQL
Управляемый экземпляр Azure SQL
Azure Synapse Analytics
Система платформы аналитики (PDW)
Конечная точка SQL аналитики в Microsoft Fabric
Хранилище в Microsoft Fabric
База данных SQL в Microsoft Fabric
Вычисляет определенный процентиль для отсортированных значений во всем наборе строк или в разных секциях набора строк в SQL Server. Для заданного значения процентиля PPERCENTILE_DISC сортирует значения выражений в предложенииORDER BY. Затем он возвращает значение с наименьшим CUME_DIST заданным значением (в отношении той же спецификации сортировки), которое больше или равно P. Например, PERCENTILE_DISC (0.5) вычисляет 50-й процентиль (то есть медиан) выражения.
PERCENTILE_DISC вычисляет процентиль на основе дискретного распределения значений столбцов. Результат вычисления равен определенному значению из столбца.
Соглашения о синтаксисе Transact-SQL
Синтаксис
PERCENTILE_DISC ( numeric_literal ) WITHIN GROUP ( ORDER BY order_by_expression [ ASC | DESC ] )
OVER ( [ <partition_by_clause> ] )
Аргументы
literal
Процентиль, который необходимо вычислить. Значение должно находиться в диапазоне от 0.0 до 1,0.
IN GROUP (ORDER BY order_by_expression [ ASC | DESC ] )
Указывает список значений, который следует отсортировать и по которому будет вычисляться процентиль. Разрешен только один аргумент order_by_expression. По умолчанию задан порядок сортировки по возрастанию. Список значений может быть любого из типов данных, которые допустимы для операции сортировки.
ПРИЁМ ( <partition_by_clause> )
Делит FROM результирующий набор предложения на секции. к которым применяется функция вычисления процентиля. Дополнительные сведения см. в предложении SELECT - OVER. Предложение <ORDER BY> и строки или <предложение>диапазона не может быть указано в PERCENTILE_DISC функции.
Типы возвращаемых данных
Тип возвращаемого значения определяется типом order_by_expression.
Поддержка совместимости
В разделе уровня совместимости 110 и выше WITHIN GROUP используется зарезервированное ключевое слово. Дополнительные сведения см. на уровне совместимости ALTER DATABASE.
Замечания
Все значения NULL, имеющиеся в наборе данных, игнорируются.
PERCENTILE_DISC недетерминирован. Дополнительные сведения см. в разделе детерминированные и недетерминированные функции.
Примеры
Пример простого синтаксиса
В следующем примере используется и PERCENTILE_CONT используется PERCENTILE_DISC для поиска заработной платы каждого сотрудника в медианах отдела. Они могут не возвращать одно и то же значение:
-
PERCENTILE_CONTвозвращает соответствующее значение, даже если оно не существует в наборе данных. -
PERCENTILE_DISCвозвращает фактическое значение набора.
USE AdventureWorks2022;
SELECT DISTINCT Name AS DepartmentName,
PERCENTILE_CONT(0.5) WITHIN GROUP (ORDER BY ph.Rate) OVER (PARTITION BY Name) AS MedianCont,
PERCENTILE_DISC(0.5) WITHIN GROUP (ORDER BY ph.Rate) OVER (PARTITION BY Name) AS MedianDisc
FROM HumanResources.Department AS d
INNER JOIN HumanResources.EmployeeDepartmentHistory AS dh
ON dh.DepartmentID = d.DepartmentID
INNER JOIN HumanResources.EmployeePayHistory AS ph
ON ph.BusinessEntityID = dh.BusinessEntityID
WHERE dh.EndDate IS NULL;
Ниже приведен частичный результирующий набор.
DepartmentName MedianCont MedianDisc
Document Control 16.8269 16.8269
Engineering 34.375 32.6923
Executive 54.32695 48.5577
Human Resources 17.427850 16.5865
Примеры: Azure Synapse Analytics и система платформы аналитики (PDW)
Пример простого синтаксиса
В следующем примере используется и PERCENTILE_CONT используется PERCENTILE_DISC для поиска заработной платы каждого сотрудника в медианах отдела. Они могут не возвращать одно и то же значение:
-
PERCENTILE_CONTвозвращает соответствующее значение, даже если оно не существует в наборе данных. -
PERCENTILE_DISCвозвращает фактическое значение набора.
-- Uses AdventureWorks
SELECT DISTINCT DepartmentName,
PERCENTILE_CONT(0.5) WITHIN GROUP (ORDER BY BaseRate) OVER (PARTITION BY DepartmentName) AS MedianCont,
PERCENTILE_DISC(0.5) WITHIN GROUP (ORDER BY BaseRate) OVER (PARTITION BY DepartmentName) AS MedianDisc
FROM dbo.DimEmployee;
Ниже приведен частичный результирующий набор.
DepartmentName MedianCont MedianDisc
-------------------- ---------- ----------
Document Control 16.826900 16.8269
Engineering 34.375000 32.6923
Human Resources 17.427850 16.5865
Shipping and Receiving 9.250000 9.0000