NTILE ウィンドウ関数 - Amazon Redshift

NTILE ウィンドウ関数

NTILE ウィンドウ関数は、パーティションの順序付けされた行を可能な限り同じサイズの指定されたランク付けグループの数に分割し、任意の行を分類するグループを返します。

構文

NTILE (expr) OVER ( [ PARTITION BY expression_list ] [ ORDER BY order_list ] )

引数

expr

ランク付けグループの数。パーティションごとに正の整数値 (0 より大きい) になる必要があります。expr 引数は Null を使用することはできません。

OVER

ウィンドウのパーティションと順序を指定する句。OVER 句にウィンドウフレーム仕様を含めることはできません。

PARTITION BY window_partition

オプション。OVER 句のグループごとのレコードの範囲。

ORDER BY window_ordering

オプション。各パーティション内の行をソートする式。ORDER BY 句を省略した場合、ランク付けの動作は同じです。

ORDER BY で一意のソートが行われない場合、行の順序は不確定になります。詳細については、「ウィンドウ関数用データの一意の並び順」を参照してください。

戻り型

BIGINT

次の例は、2008 年 8 月 26 日に Hamlet のチケットに支払った価格を 4 つのランクグループにランク付けします。結果セットは 17 行であり、1 位から 4 位のランク付けにほぼ均等に分割されます。

select eventname, caldate, pricepaid, ntile(4) over(order by pricepaid desc) from sales, event, date where sales.eventid=event.eventid and event.dateid=date.dateid and eventname='Hamlet' and caldate='2008-08-26' order by 4; eventname | caldate | pricepaid | ntile -----------+------------+-----------+------- Hamlet | 2008-08-26 | 1883.00 | 1 Hamlet | 2008-08-26 | 1065.00 | 1 Hamlet | 2008-08-26 | 589.00 | 1 Hamlet | 2008-08-26 | 530.00 | 1 Hamlet | 2008-08-26 | 472.00 | 1 Hamlet | 2008-08-26 | 460.00 | 2 Hamlet | 2008-08-26 | 355.00 | 2 Hamlet | 2008-08-26 | 334.00 | 2 Hamlet | 2008-08-26 | 296.00 | 2 Hamlet | 2008-08-26 | 230.00 | 3 Hamlet | 2008-08-26 | 216.00 | 3 Hamlet | 2008-08-26 | 212.00 | 3 Hamlet | 2008-08-26 | 106.00 | 3 Hamlet | 2008-08-26 | 100.00 | 4 Hamlet | 2008-08-26 | 94.00 | 4 Hamlet | 2008-08-26 | 53.00 | 4 Hamlet | 2008-08-26 | 25.00 | 4 (17 rows)