- 카테고리:
윈도우 함수 (순위 관련, 윈도우 프레임)
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|
+--------+------+------------+