카테고리:

윈도우 함수 (순위 관련)

NTILE

순서가 지정된 데이터 세트를 constant_value 로 지정된 버킷 수로 균등하게 나눕니다. 버킷은 1부터 constant_value 까지 순차적으로 번호가 지정됩니다.

구문

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

인자

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