소개

PostgreSQL 요약 통계와 윈도 함수

Michel Semaan

Data Scientist

학습 동기

2004년 이후 미국 하계 올림픽 금메달 합계 및 누적 합계

| Year | Medals | Medals_RT |
|------|--------|-----------|
| 2004 | 116    | 116       |
| 2008 | 125    | 241       |
| 2012 | 147    | 388       |

원반던지기 디펜딩 챔피언 현황

| Year | Champion | Last_Champion | Reigning_Champion |
|------|----------|---------------|-------------------|
| 1996 | GER      | null          | false             |
| 2000 | LTU      | GER           | false             |
| 2004 | LTU      | LTU           | true              |
| 2008 | EST      | LTU           | false             |
| 2012 | GER      | EST           | false             |
PostgreSQL 요약 통계와 윈도 함수

강의 개요

  1. 윈도우 함수 소개
  2. 페치, 순위, 페이징
  3. 집계 윈도우 함수와 프레임
  4. 윈도우 함수 심화
PostgreSQL 요약 통계와 윈도 함수

하계 올림픽 데이터셋

  • 각 행은 하계 올림픽에서 수여된 메달을 나타냅니다

  • Year, City
  • Sport, Discipline, Event
  • Athlete, Country, Gender
  • Medal
PostgreSQL 요약 통계와 윈도 함수

윈도우 함수

  • 현재 행과 관련된 행 집합에 대해 연산을 수행합니다
  • GROUP BY 집계 함수와 유사하지만, 모든 행이 결과에 유지됩니다

활용 사례

  • 이전 또는 이후 행의 값 가져오기 (예: 이전 행의 값 조회)
    • 디펜딩 챔피언 여부 판단
    • 시간에 따른 성장률 계산
  • 정렬된 목록에서 값의 위치에 따라 순위(1위, 2위 _등_) 부여
  • 누적 합계, 이동 평균
PostgreSQL 요약 통계와 윈도 함수

행 번호

쿼리

SELECT
  Year, Event, Country
FROM Summer_Medals
WHERE
  Medal = 'Gold';

결과

| Year | Event                      | Country |
|------|----------------------------|---------|
| 1896 | 100M Freestyle             | HUN     |
| 1896 | 100M Freestyle For Sailors | GRE     |
| 1896 | 1200M Freestyle            | HUN     |
| ...  | ...                        | ...     |
PostgreSQL 요약 통계와 윈도 함수

ROW_NUMBER 소개

쿼리

SELECT
  Year, Event, Country,
  ROW_NUMBER() OVER () AS Row_N
FROM Summer_Medals
WHERE
  Medal = 'Gold';

결과

| Year | Event                      | Country | Row_N |
|------|----------------------------|---------|-------|
| 1896 | 100M Freestyle             | HUN     | 1     |
| 1896 | 100M Freestyle For Sailors | GRE     | 2     |
| 1896 | 1200M Freestyle            | HUN     | 3     |
| ...  | ...                        | ...     | ...   |
PostgreSQL 요약 통계와 윈도 함수

윈도우 함수의 구조

쿼리

SELECT
  Year, Event, Country,
  ROW_NUMBER() OVER () AS Row_N
FROM Summer_Medals
WHERE
  Medal = 'Gold';
  • FUNCTION_NAME() OVER (...)
    • ORDER BY
    • PARTITION BY
    • ROWS/RANGE PRECEDING/FOLLOWING/UNBOUNDED
PostgreSQL 요약 통계와 윈도 함수

연습해 봅시다!

PostgreSQL 요약 통계와 윈도 함수

Preparing Video For Download...