- Kategorien:
Fensterfunktionen (Rangbezogen)
NTILE¶
Teilt ein sortiertes Dataset gleichmäßig in die durch constant_value
angegebenen Anzahl Buckets. Die Buckets werden fortlaufend von 1 bis constant_value
nummeriert.
Syntax¶
NTILE( <constant_value> ) OVER ( [ PARTITION BY <expr1> ] ORDER BY <expr2> [ { ASC | DESC } ] )
Argumente¶
constant_value
Die gewünschte Anzahl an Buckets. Diese muss ein positiver ganzzahliger Wert sein.
expr1
Wenn Sie die Daten in Gruppen unterteilen möchten, geben Sie das Kriterium (normalerweise eine Spalte) für die Partitionierung an. Sie können beispielsweise nach Provinz partitionieren.
expr2
Der Ausdruck (normalerweise eine Spalte), nach dem die Zeilen im Fenster sortiert werden sollen. Sie können beispielsweise nach Zeitstempel sortieren.
Nutzungshinweise¶
Wenn die Daten partitioniert sind, werden die Daten in jeder Partition gleichmäßig in Buckets aufgeteilt. Wenn die Anzahl der Buckets beispielsweise 3 ist und die Daten nach Bundesland partitioniert sind, werden ungefähr 1/3 der Zeilen für jedes Provinz in jeden Bucket eingefügt.
Wenn die Anweisung eine ORDER BY-Klausel für die Ausgabe sowie eine ORDER BY-Klausel für die NTILE-Funktion enthält, funktionieren die beiden unabhängig voneinander. Die Funktion ORDER BY für die Funktion NTILE bestimmt, welche Zeilen jedem Bucket zugewiesen werden, während die Ausgabe für ORDER BY die Reihenfolge bestimmt, in der die Ausgabezeilen angezeigt werden.
Beispiele¶
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|
+--------+------+-------+