- Categorias:
Funções de janela (relacionada à classificação)
NTILE¶
Divide um conjunto de dados ordenado igualmente entre o número de buckets especificado por constant_value
. Os buckets são numerados sequencialmente de 1 até constant_value
.
Sintaxe¶
NTILE( <constant_value> ) OVER ( [ PARTITION BY <expr1> ] ORDER BY <expr2> [ { ASC | DESC } ] )
Argumentos¶
constant_value
O número desejado de buckets; deve ser um valor inteiro positivo.
expr1
Se você deseja dividir os dados em grupos, especifique o critério (geralmente uma coluna) para realização da divisão. Por exemplo, você pode dividir por província.
expr2
A expressão (geralmente uma coluna) pela qual se ordenam as linhas na janela. Por exemplo, você pode ordenar por carimbo de data/hora.
Notas de uso¶
Se os dados forem particionados, então os dados são divididos em buckets igualmente dentro de cada partição. Por exemplo, se o número de baldes for 3, e se os dados forem divididos por província, então aproximadamente 1/3 das linhas de cada província são colocadas em cada bucket.
Se a instrução tiver uma cláusula ORDER BY para a saída, assim como uma cláusula ORDER BY para a função NTILE, as duas funcionarão independentemente; a ORDER BY para a função NTILE influencia quais linhas são atribuídas a cada bucket, enquanto a ORDER BY para a saída determina a ordem na qual as linhas de saída são mostradas.
Exemplos¶
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|
+--------+------+-------+