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