Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Относится к:SQL Server
База данных SQL Azure
Управляемый экземпляр SQL Azure
Azure Synapse Analytics
SQL аналитическая конечная точка в Microsoft Fabric
Хранилище в Microsoft Fabric
SQL база данных в Microsoft Fabric
Функция PERCENTILE_DISC вычисляет определённый процентиль для отсортированных значений в целом наборе строк или внутри отдельных разбиений набора строк. Для заданного значения процентиля 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 ] )
Синтаксис функции аналитики:
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 функции.
Замечание
Этот OVER пункт необязательн в Fabric Data Warehouse и в SQL-аналитике.
PERCENTILE_DISC может использоваться как в агрегированной, так и в аналитической (оконной) форме.
Типы возвращаемых данных
Тип возвращаемого значения определяется типом order_by_expression.
Поддержка совместимости
В разделе уровня совместимости 110 и выше WITHIN GROUP используется зарезервированное ключевое слово. Дополнительные сведения см ALTER DATABASE . на уровне совместимости.
Замечания
Все значения NULL, имеющиеся в наборе данных, игнорируются.
PERCENTILE_DISC недетерминирован. Дополнительные сведения см. в разделе детерминированные и недетерминированные функции.
Агрегированная форма , PERCENTILE_DISCв которой опущено предложениеOVER, не поддерживается в SQL Server, База данных SQL Azure, Управляемый экземпляр SQL Azure или SQL Database in Fabric.
Примеры
Пример простого синтаксиса
В следующем примере используется и 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
Пример простого синтаксиса
В следующем примере используется и 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