Syntaxe
Description de l’illustration ntile.gif
Voir aussi :
« Fonctions analytiques » pour plus d’informations sur la syntaxe, la sémantique et les restrictions, y compris les formes valides de expr
But
NTILE
est une fonction analytique. Il divise un ensemble de données ordonné en un certain nombre de compartiments indiqués par expr
et attribue le numéro de compartiment approprié à chaque ligne. Les seaux sont numérotés de 1 à expr
. La valeur expr
doit se résoudre à une constante positive pour chaque partition. Oracle Database attend un entier, et si expr
est une constante non integer, Oracle tronque la valeur en un entier. La valeur de retour est NUMBER
.
Le nombre de lignes dans les compartiments peut différer d’au plus 1. Les valeurs restantes (le reste du nombre de lignes divisé par des compartiments) sont réparties une pour chaque compartiment, en commençant par le compartiment 1.
Si expr
est supérieur au nombre de lignes, un nombre de compartiments égal au nombre de lignes sera rempli et les compartiments restants seront vides.
Vous ne pouvez pas utiliser NTILE
ou toute autre fonction analytique pour expr
. Autrement dit, vous ne pouvez pas imbriquer les fonctions analytiques, mais vous pouvez utiliser d’autres expressions de fonction intégrées pour expr
.
Voir aussi :
« À propos des expressions SQL » pour des informations sur les formes valides de expr
et de la Table 2-10, « Matrice de conversion de type implicite » pour plus d’informations sur la conversion implicite
Exemples
L’exemple suivant divise en 4 compartiments les valeurs de la colonne salary
de la table oe.employees
du département 100. La colonne salary
a 6 valeurs dans ce département, de sorte que les deux valeurs supplémentaires (le reste de 6 / 4) sont allouées aux compartiments 1 et 2, qui ont donc une valeur de plus que les compartiments 3 ou 4.
SELECT last_name, salary, NTILE(4) OVER (ORDER BY salary DESC) AS quartile FROM employees WHERE department_id = 100;LAST_NAME SALARY QUARTILE------------------------- ---------- ----------Greenberg 12000 1Faviet 9000 1Chen 8200 2Urman 7800 2Sciarra 7700 3Popp 6900 4