[SQLD 자격증] 2과목 | WINDOW 함수 전체 설명 & 문제풀이

    728x90
    반응형

    WINDOW 함수

    • 레코드(행) 사이의 관계를 쉽게 정의하기 위한 함수
    • ex) 매장이 위치한 지역별로 판매량 1위를 차지하는 매뉴명을 알고싶을 때 사용

    SELECT WINDOW_FUNCTION ( ARGUMENTS ) OVER ( [PARTITION BY 컬럼명] [ORDER BY 컬럼명] [WINDOWING] )
    FROM 테이블명 ;
    • WINDOW_FUNCTION : 윈도우 함수
      • 그룹 내 집계함수 : COUNT, SUM, MIN, MAX, AVG 등
      • 그룹 내 순위(RANK) 함수
        • RANK : 동일한 순위에 대해 동일한 순위를 부여한다., 동일한 순위를 하나의 건수로 계산하지 않는다.
        • DENSE_RANK : 동일한 순위에 대해 동일한 순위를 부여한다., 동일한 순위는 하나의 건수로 계산한다.
        • ROW_NUMBER : 동일한 순위에 대해 고유한 순위를 부여한다.
      • 그룹 내 비율 관련 함수
        • PERCENT_RANK
      • 그룹 내 행 순서 함수
    • ARGUMENTS : 인수 ( 컬럼명 등 함수의 작업이 이뤄지는 대상 )
    • PARTITION BY : 테이블의 레코드들을 쪼개는 기준
    • ORDER BY : 쪼개진 레코드들 내에서 혹은 전체 테이블에서 레코드들을 어떤 기준으로 정렬할지
    • WINDOWING : 함수의 연산 대상이 되는 레코드의 범위를 정함
      • RANGE : 범위를 지정해줄 때 사용
        ex. RANGE BETWEEN 100 AND 200
      • BETWEEN a AND b : a부터 b까지 윈도우가 적용됨
      • UNBOUNDED PRECEDING : 윈도우의 시작 위치 = 첫 번째 행
      • UNBOUNDED FOLLOWING : 윈도우의 마지막 위치 = 마지막 행
      • CURRENT ROW : 윈도우 시작 위치가 현재 행
    함수 내용  
    WINDOW_FUNCTION
    윈도우 함수
    그룹 내 집계함수 COUNT, SUM, MIN, MAX, AVG 등
    그룹 내 순위(RANK) 함수 RANK
    - 동일한 순위에 대해 동일한 순위를 부여한다.
    - 동일한 순위를 하나의 건수로 계산하지 않는다
    DENSE_RANK
    - 동일한 순위에 대해 동일한 순위를 부여한다.
    - 동일한 순위는 하나의 건수로 계산한다.
    ROW_NUMBER
    - 동일한 순위에 대해 고유한 순위를 부여한다.
    그룹 내 비율 관련 함수 PERCENT_RANK
    - 값이 아닌, 순서를 대상으로,
    파티션 내에서의 순서별 백분율을 조회한다.
    NTILT(n)
    - 파티션별로 전체 건수를 n등분한 값을 반환한다.
    - n=4이면 4등분한 것 내에서 몇인지 조회한다.
    CUME_DIST
    - 파티션 내 전체에서 현재 행의 값 이하인
    레코드 건수에 대한 누적 백분율을 조회한다.
    - 누적 분포 상에 0~1값을 가짐
    그룹 내 행 순서 함수

    FIRST_VALUE
    - 파티션 내에서 가장 처음 나오는 값 반환
    - MIN 과 동일한 결과
    LAST_VALUE
    - 파티션 내에서 가장 마지막에 나오는 값 반환
    - MAX와 동일한 결과
    LAG( 컬럼명, 레코드위치차이값)
    - 이전 행을 가져온다.
    LEAD(컬럼명, 레코드위치차이값, null일경우 대체값)
    - 다음(특정 위치의) 행을 가져온다
    - default는 1이다.
    ARGUMENTS
    인수(컬럼명 등 함수의 작업이 이뤄지는 대상)

    -
    PARTITION BY
    테이블의 레코드들을 쪼개는 기준

    -
    ORDER BY 
    쪼개진 레코드들 내에서 혹은 전체 테이블에서 레코드들을 어떤 기준으로 정렬할지

    -
    WINDOWING
    함수의 연산 대상이 되는
    레코드의 범위를 정함

    SELECT WINDOW_FUNCTION(ARGUMENTS) OVER( [PARTITION BY 컬럼명] [ORDER BY 컬럼명] [WINDOWING] )
    FROM 테이블명;
    RANGE : 범위를 지정해줄 때 사용
    ex. RANGE BETWEEN 100 AND 200
    BETWEEN a AND b : a부터 b까지 윈도우가 적용됨
    UNBOUNDED PRECEDING : 윈도우의 시작 위치 = 첫 번째 행
    UNBOUNDED FOLLOWING : 윈도우의 마지막 위치 = 마지막 행
    CURRENT ROW : 윈도우 시작 위치가 현재 행

     

     

    문제

     

    정답

    A : DENSE_RANK

    B : RANK

    C : ROW_NUMBER

     

    문제

     

    정답

    1

    여타 SQL 문과 동일하게 ODER BY 를 사용하여 오름차순, 내림차순 출력이 가능하다. 순위로 자동으로 정렬되는 것은 아니다  

     

    문제

     

    정답

     

    문제

     

    정답

    SUM, AVG, COUNT, MAX, MIN 집계성 함수들도 윈도우 함수로 사용할 수 있다. 

     

    문제

     

    정답

    ㄱ : E, ㄴ : E

     

    문제

     

    정답

     

    WINDOING 문제

     

    정답

    UNBOUNDED PRECEDING

     


     

    SQLD 목차 바로가기

    SQLD 과목 목차 링크
    1과목 
    데이터 모델링의 이해

    (10문항 출제)
    데이터 모델링의 이해 데이터모델링의 이해, 엔터티, 속성
    관계, 식별자
    데이터 모델과 성능 성능 데이터 모델링, 정규화, 반정규화 설명 & 문제풀이
    SQLD 2과목
    SQL 기본및 활용

    (40문항 출제)
    SQL 기본 관계형 데이터베이스 개요 및 DCL(GRANT, REVOKE) 설명 & 문제풀이
    DDL(CREAT, ALTER, DROP, RENAME, TRUNCATE) 설명 & 문제풀이
    DML(INSERT, UPDATE, DELETE) 설명 & 문제풀이
    TCL(ROLLBACK, SAVEPOINT, COMMIT) 설명 & 문제풀이
    DML(SLELECT) 기본구조 설명 & 문제풀이
    DML(SELECT) 함수(문자형, 숫자형, 날짜형, 형변환) 설명 & 문제풀이
    DML(SELECT) DECODE, CASE WHEN, ORDER BY 설명 & 문제풀이
    WHERE 절 연산자, 문자열 연산자, 임시테이블, VIEW 설명 & 문제풀이
    NULL 함수, GROUP BY, HAVING, ROWNUM & ROWID 설명 & 문제풀이
    SQL 활용 GROUP 함수 설명 & 문제풀이
    JOIN, UNION, MINUS, 서브쿼리 설명 & 문제풀이
    계층형 조회 설명 & 문제풀이
    WINDOW 함수 전체 설명 & 문제풀이
    SQL 최적화 기본원리 테이블 파티션, 옵티마이저, 인덱스 설명 & 문제풀이
    옵티마이저 JOIN, PL-SQL, 분산 데이터베이스 설명 & 문제풀이

     

    728x90
    반응형

    댓글