SQL PERCENTILE_DISC et PERCENTILE_CONT


Exemple

La fonction PERCENTILE_DISC répertorie la valeur de la première entrée où la distribution cumulative est supérieure au centile que vous fournissez à l'aide du paramètre numeric_literal .

Les valeurs sont regroupées par jeu de lignes ou partition, comme spécifié par la clause WITHIN GROUP .


La fonction PERCENTILE_CONT est similaire à la fonction PERCENTILE_DISC , mais renvoie la moyenne de la somme de la première entrée correspondante et de l'entrée suivante.

SELECT BusinessEntityID, JobTitle, SickLeaveHours,
       CUME_DIST() OVER(PARTITION BY JobTitle ORDER BY SickLeaveHours ASC)
       AS "Cumulative Distribution",
       PERCENTILE_DISC(0.5) WITHIN GROUP(ORDER BY SickLeaveHours)
          OVER(PARTITION BY JobTitle) AS "Percentile Discreet"
FROM Employee;

Pour rechercher la valeur exacte de la ligne qui correspond ou dépasse le 0,5 centile, vous transmettez le percentile en tant que littéral numérique dans la fonction PERCENTILE_DISC . La colonne Percentile Discreet d'un jeu de résultats répertorie la valeur de la ligne à laquelle la distribution cumulative est supérieure au centile spécifié.

BusinessEntityID Profession SickLeaveHours Distribution cumulative Centile discret
272 Spécialiste d'application 55 0,25 56
268 Spécialiste d'application 56 0,75 56
269 Spécialiste d'application 56 0,75 56
267 Spécialiste d'application 57 1 56

Pour baser le calcul sur un ensemble de valeurs, vous utilisez la fonction PERCENTILE_CONT . La colonne "Percentile Continuous" dans les résultats indique la valeur moyenne de la somme de la valeur du résultat et de la valeur correspondante la plus élevée suivante.

SELECT BusinessEntityID, JobTitle, SickLeaveHours,
       CUME_DIST() OVER(PARTITION BY JobTitle ORDER BY SickLeaveHours ASC)
       AS "Cumulative Distribution",
       PERCENTILE_DISC(0.5) WITHIN GROUP(ORDER BY SickLeaveHours) 
          OVER(PARTITION BY JobTitle) AS "Percentile Discreet",
       PERCENTILE_CONT(0.5) WITHIN GROUP(ORDER BY SickLeaveHours) 
          OVER(PARTITION BY JobTitle) AS "Percentile Continuous"
FROM Employee;
BusinessEntityID Profession SickLeaveHours Distribution cumulative Centile discret Percentile continu
272 Spécialiste d'application 55 0,25 56 56
268 Spécialiste d'application 56 0,75 56 56
269 Spécialiste d'application 56 0,75 56 56
267 Spécialiste d'application 57 1 56 56