Kategorien:

Fensterfunktionen (Rangbezogen)

NTILE

Teilt ein sortiertes Dataset gleichmäßig in die durch Konstantenwert angegebenen Anzahl Buckets. Die Buckets werden fortlaufend von 1 bis Konstantenwert nummeriert.

Syntax

NTILE( <constant_value> ) OVER ( [ PARTITION BY <expr1> ] ORDER BY <expr2> [ { ASC | DESC } ] )

Argumente

Konstantenwert

Die gewünschte Anzahl an Buckets. Diese muss ein positiver ganzzahliger Wert sein.

Ausdruck1

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.

Ausdruck2

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