- 카테고리:
윈도우 함수 (순위 관련)
NTILE¶
순서가 지정된 데이터 세트를 constant_value
로 지정된 버킷 수로 균등하게 나눕니다. 버킷은 1부터 constant_value
까지 순차적으로 번호가 지정됩니다.
구문¶
NTILE( <constant_value> ) OVER ( [ PARTITION BY <expr1> ] ORDER BY <expr2> [ { ASC | DESC } ] )
인자¶
constant_value
원하는 버킷 수로, 양의 정수 값이어야 합니다.
expr1
데이터를 그룹으로 분할하려면 분할 기준(일반적으로 열)을 지정합니다. 예를 들어, 지방별로 분할할 수 있습니다.
expr2
윈도우에서 행을 정렬하는 데 사용되는 식(일반적으로 열)입니다. 예를 들어, 타임스탬프로 정렬할 수 있습니다.
사용법 노트¶
데이터가 분할된 경우, 데이터는 각 파티션 내에서 동일하게 버킷으로 분할됩니다. 예를 들어, 버킷 수가 3이고 데이터가 지방별로 분할된 경우, 각 지방 행의 약 1/3이 각 버킷에 배치됩니다.
출력에 대한 ORDER BY 절과 NTILE 함수에 대한 ORDER BY 절이 문에 있는 경우, 둘은 독립적으로 작동합니다. NTILE 함수의 ORDER BY는 각 버킷에 할당되는 행에 영향을 미치는 한편, 출력의 ORDER BY는 출력 행이 표시되는 순서를 결정합니다.
예¶
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|
+--------+------+-------+