PERCENT_RANK

PERCENT_RANK (백분위 순위)

값 그룹 안에서 값의 상대 순위를 0.0부터 1.0 사이의 백분율로 반환해요.

출처: Snowflake SQL Reference - PERCENT_RANK

본문

구문

PERCENT_RANK()
 OVER ( [ PARTITION BY <expr1> ] ORDER BY <expr2> [ { ASC | DESC } ] [ NULLS { FIRST | LAST } ] [ <fixedRangeFrame> ] )

여기서:

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

사용 시 참고 사항

  • expr1은 파티션으로 나눌 열(또는 표현식)을 지정해요.

    예를 들어 각 주(州) 또는 도(道) 안에서 농부들을 그들이 생산한 옥수수 양 순서대로 순위를 매기고 싶다고 가정해요. 이 경우 주(state)로 파티션을 나눠요.

    단일 그룹만 원한다면(예: 미국의 모든 농부를 어느 주에 살든 상관없이 순위를 매기고 싶다면) 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는 고정 경계가 있는 범위 기반 윈도우 프레임만 지원해요. 윈도우 프레임에 대한 자세한 내용(구문, 사용 참고 사항, 예시 포함)은 Window function syntax and usage를 참고하세요.

예시

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

더 알아보기