Catégories :

Fonctions de la fenêtre (lié au rang)

NTILE

Divise de façon égale un ensemble de données ordonné en un nombre de compartiments spécifié par valeur_constante. Les compartiments sont numérotés séquentiellement de 1 jusqu’à la valeur valeur_constante.

Syntaxe

NTILE( <constant_value> ) OVER ( [ PARTITION BY <expr1> ] ORDER BY <expr2> [ { ASC | DESC } ] )

Arguments

valeur_constante

Le nombre de compartiments désiré ; doit être une valeur entière positive.

expr1

Si vous souhaitez partitionner les données en groupes, spécifiez le critère (généralement une colonne) sur lequel baser le partitionnement. Par exemple, vous pouvez effectuer la partition par province.

expr2

L’expression (généralement une colonne) permettant de classer les lignes dans la fenêtre. Par exemple, vous pouvez effectuer un classement par horodatage.

Notes sur l’utilisation

Si les données sont partitionnées, elles sont divisées en compartiments de manière égale dans chaque partition. Par exemple, si le nombre de compartiments est égal à 3 et si les données sont partitionnées par province, environ 1/3 des lignes de chaque province sont placées dans chaque compartiment.

Si l’instruction comporte une clause ORDER BY pour la sortie, ainsi qu’une clause ORDER BY pour la fonction NTILE, les deux fonctionnent indépendamment ; ORDER BY pour la fonction NTILE détermine les lignes attribuées à chaque compartiment, tandis que ORDER BY pour la sortie détermine l’ordre d’affichage des lignes de sortie.

Exemples

SELECT
  exchange,
  symbol,
  NTILE(4) OVER (PARTITION BY exchange ORDER BY shares) AS ntile_4
FROM trades
ORDER BY exchange, NTILE_4;

+--------+------+-------+
|exchange|symbol|NTILE_4|
+--------+------+-------+
|C       |SPY   |      1|
|C       |AAPL  |      2|
|C       |AAPL  |      3|
|N       |SPY   |      1|
|N       |AAPL  |      1|
|N       |SPY   |      2|
|N       |QQQ   |      2|
|N       |QQQ   |      3|
|N       |YHOO  |      4|
|Q       |MSFT  |      1|
|Q       |YHOO  |      1|
|Q       |MSFT  |      2|
|Q       |YHOO  |      2|
|Q       |QQQ   |      3|
|Q       |QQQ   |      4|
|P       |AAPL  |      1|
|P       |YHOO  |      1|
|P       |MSFT  |      2|
|P       |SPY   |      3|
|P       |MSFT  |      4|
+--------+------+-------+