Sintaxe
Descrição da ilustração ntil.gif
See Also:
“Analytic Functions” for information on syntax, semantics, and restrictions, including valid forms of expr
Purpose
NTILE
é uma função analítica. Divide um conjunto de dados ordenados em um número de baldes indicados por expr
e atribui o número de balde apropriado a cada linha. Os baldes são numerados de 1 a expr
. O valor expr
deve resolver-se para uma constante positiva para cada partição. Oracle Database espera um inteiro, e se expr
é uma constante não-inteiro, então Oracle trunca o valor para um inteiro. O valor de retorno é NUMBER
.
o número de linhas nos baldes pode diferir no máximo 1. Os valores restantes (o resto do número de linhas divididas por baldes) são distribuídos um para cada balde, começando com o balde 1.
se expr
for maior do que o número de linhas, então um número de baldes igual ao número de linhas será preenchido, e os baldes restantes estarão vazios.
não pode utilizar NTILE
nem qualquer outra função analítica para expr
. Isto é, você não pode aninhar funções analíticas, mas você pode usar outras expressões de função incorporadas para expr
.
Veja Também:
“Sobre Expressões SQL” para obter informações sobre válido formas de expr
e Tabela 2-10, “Implícita Conversão de Tipo de Matriz” para obter mais informações sobre conversão implícita
Exemplos
O exemplo a seguir divide-se em 4 baldes os valores em salary
coluna oe.employees
tabela do Departamento de 100. A coluna salary
tem 6 valores neste departamento, de modo que os dois valores extra (o restante de 6 / 4) são atribuídos a baldes 1 e 2, que, portanto, têm mais um valor do que baldes 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