- 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 constant_value
. Les compartiments sont numérotés séquentiellement de 1 jusqu’à la valeur constant_value
.
Syntaxe¶
NTILE( <constant_value> ) OVER ( [ PARTITION BY <expr1> ] ORDER BY <expr2> [ { ASC | DESC } ] )
Arguments¶
constant_value
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|
+--------+------+-------+