[SQLD] 2파트 SQL 기본 및 활용 - SQL 활용

    본 포스팅은

    BDA 빅데이터분석학회 SQLD 스터디 학습내용입니다. 

     

    [2024 이기적 SQL 개발자 이론서+기출문제]

    서적과 강의를 바탕으로 서술한 내용임을 밝힙니다.

     


    집합 연산

    : 여러 SQL 결과를 연결해 하나의 형태로 결합하는 문법

    SELECT COL1
    	FROM A
        UNION
    SELECT COL1
    	FROM B;

    위 쿼리 결과와 아래 쿼리 결과를 합집합 처리(중복 제거)

    SELECT COL1
    	FROM A
        MINUS
    SELECT COL!
    	FROM B
    ORDER BY COL1;

    위 쿼리 결과집합을 아래 쿼리 결과집합을 차집합(중복 제거)

    집합연산자를 쓸 땐 ORDER BY는 항상 마지막에 쓰여야 함→위아래 합친 결과에 대해 ORDER BY 실행

     

    SELECT 부서ID, SUM(연봉)
    	FROM 직원
        GROUP BY POLLUP(부서ID);

    POLLUP을 사용하면 소계와 합계를 한번에 추출. 즉, 한 번의 작성으로 여러 집계를 냄

    SELECT 고객ID, 사용월, SUM(사용량)
    	FROM 고객월별가스사용량
        GROUP BY CUBE(고객ID, 사용월);

    CUBE는 입력된 컬럼의 모든 경우의 수를 집계

    SELECT 고객ID, 사용월, SUM(사용량)
    	FROM 고객월별가스사용량
        GROUP BY GROUPING SETS(고객ID, 사용월);

    GROUPING SETS은 입력한 컬럼 그대로 집계처리

    윈도우 함수 문법

    WINDOW_FUNCTION (매개변수) OVER ([PARTITION BY 컬럼][ORDER BY 절][WINDOWING 절])
    • WINDOW_FUNCION: 사용할 윈도우 함수 작성. 매개변수가 필요하면 작성
    • OVER: 윈도우함수에 반드시 사용되는 구절
    • PARTITION BY 컬럼: 테이블 내부의 행들을 특정 칼럼을 기준으로 그룹화(GROUP BY와 비슷)
    • ORDER BY 컬럼: 특정 컬럼 기준으로 그룹화(PARTITION BY)한 대상을 정렬
    • WINDOWING 절: 테이블 내에서 사용하려는 행위 범위를 지정

    순위 함수(RANK, DENSE_RANK, ROW_NUMBER)

    :테이블의 행과 행간의 관계를 순위로 비교

     

    서브쿼리(SUB QUERY)

    : 작성된 쿼리 내부에 다른 쿼리를 삽입하여 보다 다양하게 데이터를 출력하는 방법을 제공

    스칼라 서브 쿼리(Scala Subquery)

    : SELECT에서 사용되는 서브쿼리로 하나의 컬럼에 대해 하나의 행만 반환하는 특징

    - 출력되는 하나의 값이 없다면 NULL을 반환

    - 출력되는 컬럼은 1개여야 함

    인라인 뷰(Inline View)

    : FROM 부분에서 사용되는 서브쿼리로 쿼리를 작성해 마치 가상의 테이블을 동적으로 생성해 사용

    댓글