PERCENTILE_CONT (Transact-SQL)

Calcule un percentile basé sur une distribution continue de la valeur de colonne dans SQL Server 2012. Le résultat est interpolé et peut ne pas être égale aux valeurs spécifiques de la colonne.

Icône Lien de rubrique Conventions de la syntaxe Transact-SQL (Transact-SQL)

Syntaxe

PERCENTILE_CONT ( numeric_literal ) 
    WITHIN GROUP ( ORDER BY order_by_expression [ ASC | DESC ] )
    OVER ( [ <partition_by_clause> ] )

Arguments

  • numeric_literal
    Percentile à calculer. Il doit être compris entre 0.0 et 1.0.

  • WITHIN GROUP ( ORDER BY order_by_expression [ ASC | DESC ])
    Spécifie une liste de valeurs numériques à trier et sur lesquelles calculer le percentile. Un seul order_by_expression est autorisé. L'expression doit correspondre à un type numérique exact (int, bigint, smallint, tinyint, numeric, bit, decimal, smallmoney, money) ou à un type numérique approximatif (float, real). Il n'autorise pas d'autres types de données. Par défaut, le tri s'effectue par ordre croissant.

  • OVER ( <partition_by_clause> )
    Divise le jeu de résultats généré par la clause FROM en partitions auxquelles la fonction percentile est appliquée. Pour plus d'informations, consultez Clause OVER (Transact-SQL). La <clause ORDER BY> et les <lignes ou la clause de plage> de la syntaxe OVER ne peuvent pas être spécifiées dans une fonction PERCENTILE_CONT.

Type des valeurs retournées

float(53)

Prise en charge de la compatibilité

Lorsque le niveau de compatibilité est 110, WITHIN GROUP est un mot clé réservé. Pour plus d'informations, consultez Niveau de compatibilité ALTER DATABASE (Transact-SQL).

Remarques d'ordre général

Toutes les valeurs NULL dans le jeu de données sont ignorées.

Exemples

A.Exemple de syntaxe de base

L'exemple suivant utilise PERCENTILE_CONT et PERCENTILE_DISC pour rechercher le salaire d'employé médian dans chaque service. Notez que ces fonctions peuvent ne pas retourner la même valeur. Cela est dû au fait que PERCENTILE_CONT interpole la valeur appropriée, qu'elle existe ou non dans le jeu de données, alors que PERCENTILE_DISC retourne toujours une valeur réelle à partir du jeu.

USE AdventureWorks2012;

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;

Voici un jeu de résultats partiel.

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

Voir aussi

Référence

PERCENTILE_DISC (Transact-SQL)