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 } ] )
Copy

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