해당 강의는 다음과 같은 순서로 이루어져 있다.
- Introduction to business intelligence for a online movie rental database
- Decision Making with simple SQL queries
- Data Driven Decision Making with advanced SQL queries
- 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);
[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에 대한 각 범주에 대한 집계를 보여줌.
'Algorithm > SQL' 카테고리의 다른 글
[SQL] 데이터 캠프 수강 (10) - Analyzing Business Data in SQL (0) | 2021.05.09 |
---|---|
[SQL] 데이터 캠프 수강 (9) - Applying SQL to Real-World Problems (0) | 2021.05.02 |
[SQL] 데이터 캠프 수강 (7) - Exploratory Data Analysis in SQL (0) | 2021.04.02 |
[SQL] 데이터 캠프 수강 (6) - Functions For Manipulating Data in PostgreSQL (0) | 2021.03.25 |
[SQL] 데이터 캠프 수강 (5) - PostgreSQL Summary Stats and Window Functions (0) | 2021.03.23 |