카테고리:

윈도우 함수 (순위 관련, 윈도우 프레임)

PERCENT_RANK

값 그룹 내 값의 상대적 순위를 반환하며, 반환 값은 0.0에서 1.0 사이의 백분율로 지정됩니다.

구문

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

여기서:

cumulativeRangeFrame ::=
    {
       RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW
     | RANGE BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING
    }

사용법 노트

  • expr1 은 분할할 기준이 되는 열(또는 식)을 지정합니다.

    예를 들어, 각각의 주 또는 도 내에서 농부의 옥수수 생산량에 따라 순서대로 농부의 순위를 매기려고 한다고 가정합니다. 이 경우, 주를 기준으로 분할합니다.

    단일 그룹만 원하는 경우(예: 해당 농부가 거주하는 주와 관계없이 미국 내 모든 농부의 순위를 매기려는 경우), PARTITION BY 절을 생략하십시오.

  • expr2 는 순위를 매길 기준이 되는 열(또는 식)을 지정합니다.

    예를 들어, 농부의 순위를 매겨 누가 가장 많은 옥수수를 생산했는지(해당 주 내의 생산량) 보려면 bushels_produced 열을 사용합니다. 자세한 내용은 이 항목에 있는 를 참조하십시오.

  • PERCENT_RANK는 다음과 같이 계산됩니다.

    n이 1인 경우:

    PERCENT_RANK = 0

    n이 1보다 큰 경우:

    PERCENT_RANK = (r - 1) / (n - 1)

    여기서 r 은 행의 RANK 이고 n 은 윈도우 파티션의 행 수입니다.

  • 값의 범위는 0.0에서 1.0입니다. 100을 곱하면 실제 백분율을 얻을 수 있습니다.

  • PERCENT_RANK는 범위 기반 누적 윈도우 프레임 을 지원하지만, 다른 유형의 윈도우 프레임은 지원하지 않습니다. 범위 기반 누적 윈도우 프레임의 구문에 대한 자세한 내용은 윈도우 프레임 구문과 사용법 을 참조하십시오.

SELECT
  exchange,
  symbol,
  PERCENT_RANK() OVER (PARTITION BY exchange ORDER BY price) AS percent_rank
FROM trades;

+--------+------+------------+
|exchange|symbol|PERCENT_RANK|
+--------+------+------------+
|C       |SPY   |         0.0|
|C       |AAPL  |         0.5|
|C       |AAPL  |         1.0|
|N       |YHOO  |         0.0|
|N       |QQQ   |         0.2|
|N       |QQQ   |         0.4|
|N       |SPY   |         0.6|
|N       |SPY   |         0.6|
|N       |AAPL  |         1.0|
|Q       |YHOO  |         0.0|
|Q       |YHOO  |         0.2|
|Q       |MSFT  |         0.4|
|Q       |MSFT  |         0.6|
|Q       |QQQ   |         0.8|
|Q       |QQQ   |         1.0|
|P       |YHOO  |         0.0|
|P       |MSFT  |        0.25|
|P       |MSFT  |         0.5|
|P       |SPY   |        0.75|
|P       |AAPL  |         1.0|
+--------+------+------------+
맨 위로 이동