- Categorias:
Sintaxe e uso da função de janela (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_valueO número desejado de buckets; deve ser um valor inteiro positivo.
expr1Se 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.
expr2A 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|
+--------+------+-------+