Sintassi
Descrizione dell’illustrazione ntile.gif
Vedi anche:
“Funzioni analitiche” per informazioni su sintassi, semantica e restrizioni, incluse le forme valide di expr
Scopo
NTILE
è una funzione analitica. Divide un set di dati ordinato in un numero di bucket indicati da expr
e assegna il numero di bucket appropriato a ciascuna riga. I bucket sono numerati da 1 a expr
. Il valore expr
deve essere risolto su una costante positiva per ogni partizione. Oracle Database prevede un numero intero e, se expr
è una costante noninteger, Oracle tronca il valore in un numero intero. Il valore restituito è NUMBER
.
Il numero di righe nei bucket può differire al massimo di 1. I valori rimanenti (il resto del numero di righe divise per bucket) sono distribuiti uno per ogni bucket, iniziando con bucket 1.
Se expr
è maggiore del numero di righe, verrà riempito un numero di bucket pari al numero di righe e i bucket rimanenti saranno vuoti.
Non è possibile utilizzare NTILE
o qualsiasi altra funzione analitica per expr
. Cioè, non è possibile nidificare le funzioni analitiche, ma è possibile utilizzare altre espressioni di funzione incorporate per expr
.
Vedi anche:
“Informazioni sulle espressioni SQL” per informazioni sui moduli validi diexpr
e Tabella 2-10, “Implicit Type Conversion Matrix” per ulteriori informazioni sulla conversione implicita
Esempi
Il seguente esempio divide in 4 bucket i valori nella colonna salary
della tabella oe.employees
del Reparto 100. La colonna salary
ha 6 valori in questo reparto, quindi i due valori aggiuntivi (il resto di 6 / 4) sono allocati ai bucket 1 e 2, che quindi hanno un valore in più rispetto ai bucket 3 o 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