NTILE

Sintassi

 Descrizione di ntile.gif segue

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 NTILEo 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



+