nth_value

nth_value

정렬된 프레임 안에서 n번째 행(오프셋)에 대해 평가된 첫 번째 비-NULL 값을 반환하는 윈도우 함수예요.

출처: 문서

본문

구문(Syntax)

nth_value (x, offset)
  OVER ([[PARTITION BY grouping_column] [ORDER BY sorting_column] 
        [ROWS, RANGE, or GROUPS expression_to_bound_rows_withing_the_group]] | [window_name])
FROM table_name
WINDOW window_name as ([[PARTITION BY grouping_column] [ORDER BY sorting_column])

윈도우 함수 구문에 대한 자세한 내용은 윈도우 함수 - 구문을 참고하세요.

인자(Parameters)

  • x — 컬럼 이름.
  • offset — 현재 행과 비교할 n번째 행.

반환 값(Returned value)

  • 정렬된 프레임 안에서 n번째 행(오프셋)에 대해 평가된 첫 번째 비-NULL 값.

예시(Example)

이 예시에서는 nth_value 함수로 프리미어 리그 축구 선수들의 가상 연봉 데이터셋에서 세 번째로 높은 연봉을 찾아요.

쿼리(Query)

DROP TABLE IF EXISTS salaries;
CREATE TABLE salaries
(
    `team` String,
    `player` String,
    `salary` UInt32,
    `position` String
)
Engine = Memory;

INSERT INTO salaries FORMAT Values
    ('Port Elizabeth Barbarians', 'Gary Chen', 195000, 'F'),
    ('New Coreystad Archdukes', 'Charles Juarez', 190000, 'F'),
    ('Port Elizabeth Barbarians', 'Michael Stanley', 100000, 'D'),
    ('New Coreystad Archdukes', 'Scott Harrison', 180000, 'D'),
    ('Port Elizabeth Barbarians', 'Robert George', 195000, 'M'),
    ('South Hampton Seagulls', 'Douglas Benson', 150000, 'M'),
    ('South Hampton Seagulls', 'James Henderson', 140000, 'M');

쿼리(Query)

SELECT player, salary, nth_value(player,3) OVER(ORDER BY salary DESC) AS third_highest_salary FROM salaries;

응답(Response)

   ┌─player──────────┬─salary─┬─third_highest_salary─┐
1. │ Gary Chen       │ 195000 │                      │
2. │ Robert George   │ 195000 │                      │
3. │ Charles Juarez  │ 190000 │ Charles Juarez       │
4. │ Scott Harrison  │ 180000 │ Charles Juarez       │
5. │ Douglas Benson  │ 150000 │ Charles Juarez       │
6. │ James Henderson │ 140000 │ Charles Juarez       │
7. │ Michael Stanley │ 100000 │ Charles Juarez       │
   └─────────────────┴────────┴──────────────────────┘

더 알아보기 (Learn more)