본문 바로가기
Algorithm/SQL

[SQL] 데이터캠프 수강 (8) - Introduction to data driven decision making

by 호찌민 2021. 4. 25.

해당 강의는 다음과 같은 순서로 이루어져 있다.

  1. Introduction to business intelligence for a online movie rental database
  2. Decision Making with simple SQL queries
  3. Data Driven Decision Making with advanced SQL queries
  4. Data Driven Decision Making with OLAP SQL queries

KPI를 정의하고, 데이터에서 정보를 추출하여, 시간의 흐름에 따른 모니터링 하는 방법을 배운다.


EXISTS 함수

  • Boolean 형태를 반환한다.
    • TRUE : Correlated Query의 결과에 행이 1개 이상 있으면 True 반환
    • FALSE :  Correlated Query의 결과에 행이 비어있으면 False 반환

NOT EXISTS (EXISTS의 반대)

SELECT *
FROM movies AS m
WHERE EXISTS -- Correlated Query의 결과 형태 반환
	(SELECT *
     FROM renting AS r
     WHERE rating IS NOT NULL
     AND r.movie_id = m.movie_id);

 

OLAP : on-line analytical processing

 

[CUBE]

SQL에서는 CUBE를 사용하여 피벗 테이블을 만들 수 있다.

 

*CUBE는 모든 경우의 수에 대한 집계를 실행해준다.

SELECT country,
		genre,
        COUNT(*)
FROM renting_extended
GROUP BY CUBE (country, genre);

<SQL CUBE 실행결과>

 

[ROLLUP]

ROLLUP(A,B) : A를 기준으로 전체 데이터의 그룹 함수 결과를 반환해준다. 만약, ROLL UP(B,A)이면 B를 기준으로 한다.

*ROLLUP 뒤의 인자 순서에 따라 결과가 바뀐다.

SELECT country,
		genre,
        COUNT(*)
FROM renting_extended
GROUP BY ROLLUP(country, genre); -- country의 각 범주에 대해 집계

 

[GROUPING SETS]

GROUPING SETS : UNION over GROUP BY와 같다고 생각

GROUPING SETS((집계하고 싶은 값1), (집계하고 싶은 값2), ... )

SELECT country,
		genre,
        COUNT(*)
FROM renting_extended
GROUP BY GROUPING SETS((country, genre), (country), (genre), ()); -- CUBE와 같음
SELECT country,
		genre,
        COUNT(*)
FROM renting_extended
GROUP BY GROUPING SETS((country, genre), (country)); -- country의 각 범주에 대한 집계만 보여줌
SELECT country,
		genre,
        COUNT(*)
FROM renting_extended
GROUP BY GROUPING SETS((country, genre), (country), (genre)); 
-- country의 각 범주와 genre에 대한 각 범주에 대한 집계를 보여줌.