Window 함수에 대한 지식을 정리했다 (그 2)

6103 단어 Window 함수MySQLSQL

소개



데이터 분석에서 중요한 함수인 것 같기 때문에, 몇 장으로 나누어, Window 함수에 대해 정리하고 있습니다.

마지막 기사는 👇

이번에도 몇 가지 샘플을 준비하고 설명합니다.

이번에는, Window 함수의 기능 일람의 소개와, Window 함수의 전형적인 이용 케이스인 이동 평균을 소개해 갑니다.

이번에도 SQL의 실행은 「DB Fiddle」라고 하는 Web 서비스를 사용해 보겠습니다.

Window 함수의 기능 목록 소개



Window 함수의 기능을 1장 그림으로 부감해 봅시다.



다음 논문에서 인용합니다.

Efficient processing of window functions in analytical SQL queries | Request PDF

세 가지 기능으로 구성되어 있음을 알 수 있습니다.
  • PARTITION BY 절로 레코드 집합 잘라
  • ORDER BY 절로 순서 지정
  • 프레임 절에 의한 현재의 행을 중심으로 한 범위의 정의

  • Window 함수로 이동 평균 계산



    당일과 전날의 단순 이동 평균을 계산해 봅시다.

    참고

    Schema (MySQL v8.0)
    CREATE TABLE temperatures (
      id INT NOT NULL PRIMARY KEY auto_increment,
      date DATE,
      city_name TEXT,
      avg_temp FLOAT
    );
    
    INSERT INTO temperatures VALUES
        (1, '2020-12-01', '東京', 10.0),
        (2, '2020-12-02', '東京', 9.0),
        (3, '2020-12-03', '東京', 8.0),
        (4, '2020-12-04', '東京', 7.0),
        (5, '2020-12-01', '愛知', 11.0),
        (6, '2020-12-02', '愛知', 10.0),
        (7, '2020-12-03', '愛知', 9.0),
        (8, '2020-12-04', '愛知', 8.0);
    

    Query
    SELECT
        date AS 日付,
        city_name,
        AVG(avg_temp) OVER avg_temp_2days AS '移動平均2日間'
    FROM temperatures
    WINDOW avg_temp_2days AS (
        PARTITION BY city_name
       ORDER BY id ASC
       ROWS BETWEEN 1 PRECEDING AND CURRENT ROW
    );
    

    창 함수의 프레임 절에서 사용할 수 있는 옵션
  • ROWS : 이동 단위를 행으로 지정
  • n PRECEDING : n 만 앞 (작은 쪽)으로 이동
  • CURRENT ROW: 현재 행

  • Results


    날짜
    city_name
    이동 평균 2일


    2020-12-01
    아이치
    11

    2020-12-02
    아이치
    10.5

    2020-12-03
    아이치
    9.5

    2020-12-04
    아이치
    8.5

    2020-12-01
    도쿄
    10

    2020-12-02
    도쿄
    9.5

    2020-12-03
    도쿄
    8.5

    2020-12-04
    도쿄
    7.5


    View on DB Fiddle

    참조



    29-35p

    출력 100개 노크 실시 중

    좋은 웹페이지 즐겨찾기