Syntax
Beschreibung der Abbildung ntile.gif
Siehe auch:
„Analytische Funktionen“ für Informationen zu Syntax, Semantik und Einschränkungen, einschließlich gültiger Formen von expr
Zweck
NTILE
ist eine analytische Funktion. Es teilt einen geordneten Datensatz in eine Anzahl von Buckets, die mit expr
angegeben sind, und weist jeder Zeile die entsprechende Bucket-Nummer zu. Die Buckets sind von 1 bis expr
nummeriert. Der Wert expr
muss für jede Partition in eine positive Konstante aufgelöst werden. Oracle Database erwartet eine Ganzzahl, und wenn expr
eine nicht ganzzahlige Konstante ist, schneidet Oracle den Wert in eine Ganzzahl ab. Der Rückgabewert ist NUMBER
.
Die Anzahl der Zeilen in den Buckets kann um höchstens 1 abweichen. Die Restwerte (der Rest der Anzahl der Zeilen geteilt durch Buckets) werden für jeden Bucket einzeln verteilt, beginnend mit Bucket 1.
Wenn expr
größer als die Anzahl der Zeilen ist, wird eine Anzahl von Buckets gefüllt, die der Anzahl der Zeilen entspricht, und die verbleibenden Buckets sind leer.
Sie können NTILE
oder eine andere Analysefunktion für expr
nicht verwenden. Das heißt, Sie können Analysefunktionen nicht verschachteln, aber Sie können andere integrierte Funktionsausdrücke für expr
verwenden.
Siehe auch:
„Über SQL-Ausdrücke“ für Informationen zu gültigen Formen von expr
und Tabelle 2-10, „Implizite Typkonvertierungsmatrix“ für weitere Informationen zur impliziten Konvertierung
Beispiele
Das folgende Beispiel unterteilt die Werte in der Spalte salary
der Tabelle oe.employees
aus Abteilung 100 in 4 Buckets. Die Spalte salary
enthält 6 Werte in dieser Abteilung, sodass die beiden zusätzlichen Werte (der Rest von 6/4) den Buckets 1 und 2 zugewiesen werden, die daher einen Wert mehr haben als die Buckets 3 oder 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