Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Применимо к:SQL Server
База данных Azure SQL
Управляемый экземпляр Azure SQL
Azure Synapse Analytics
Система платформы аналитики (PDW)
Конечная точка SQL аналитики в Microsoft Fabric
Хранилище в Microsoft Fabric
База данных SQL в Microsoft Fabric
Вычисляет процентиль на основе непрерывного распределения значения столбца в ядро СУБД SQL Server. Результат интерполируется и может не совпадать с определенными значениями в столбце.
Соглашения о синтаксисе Transact-SQL
Синтаксис
PERCENTILE_CONT ( numeric_literal )
WITHIN GROUP ( ORDER BY order_by_expression [ ASC | DESC ] )
OVER ( [ <partition_by_clause> ] )
Аргументы
numeric_literal
Процентиль, который необходимо вычислить. Значение должно находиться в диапазоне от 0.0 и 1.0.
WITHIN GROUP (ORDER BY ORDER_BY_EXPRESSION )
Указывает список числовых значений, который следует отсортировать и по которому будет вычисляться процентиль. Разрешен только один аргумент order_by_expression. Результатом вычисления выражения должен быть точный или приблизительный числовой тип. Другие типы данных недопустимы. Точными числовыми типами являются int, bigint, smallint, tinyint, numeric, bit, decimal, smallmoney и money. Приблизительными числовыми типами являются float и real. По умолчанию задан порядок сортировки по возрастанию.
ПРИЁМ ( <partition_by_clause> )
Делит результирующий набор, созданный FROM предложением, на секции, к которым применяется функция процентиля. Дополнительные сведения см. в предложении SELECT — OVER. Предложение ORDER BY и <rows or range clause>OVER синтаксис не могут быть указаны в PERCENTILE_CONT функции.
Типы возвращаемых данных
float(53)
Поддержка совместимости
WITHIN GROUP — это зарезервированное ключевое слово, начиная с уровня 110совместимости. Дополнительные сведения см. в статье Уровень совместимости инструкции ALTER DATABASE (Transact-SQL).
Замечания
Все значения NULL, имеющиеся в наборе данных, игнорируются.
Функция PERCENTILE_CONT не детерминирована. Дополнительные сведения см. в разделе Deterministic and Nondeterministic Functions.
Примеры
Примеры кода в этой статье используют базу данных образца AdventureWorks2025 или AdventureWorksDW2025, которую можно скачать с домашней страницы образцов и проектов сообщества Microsoft SQL Server и.
А. Поиск зарплаты сотрудников медиана на отдел
В следующем примере используется и PERCENTILE_CONT выполняется PERCENTILE_DISC поиск заработной платы сотрудника медиана в каждом отделе. Эти функции могут не возвращать то же значение.
PERCENTILE_CONT интерполирует соответствующее значение, которое может или не существовать в наборе данных, в то время как PERCENTILE_DISC всегда возвращает фактическое значение из набора.
USE AdventureWorks2022;
GO
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)
В следующем примере используется AdventureWorksDW2012 пример базы данных.
B. Поиск зарплаты сотрудников медиана на отдел
В следующем примере используется и PERCENTILE_CONT выполняется PERCENTILE_DISC поиск заработной платы сотрудника медиана в каждом отделе. Эти функции могут не возвращать то же значение.
PERCENTILE_CONT интерполирует соответствующее значение, которое может или не существовать в наборе данных, в то время как PERCENTILE_DISC всегда возвращает фактическое значение из набора.
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