본문 바로가기
Algorithm/SQL

[SQL] 데이터 캠프 수강 (11) - Reporting in SQL

by 호찌민 2021. 5. 23.

이번 강의는 아래 4개의 단원으로 구성되어 있다.

  • Exploring the Olympics Dataset
  • Creating Reports
  • Cleaning & Validation
  • Complex Calculations

[Chapter1]

  • E:R 다이어그램을 보면서 테이블 간의 결합을 통한 데이터 추출을 진행했다.
  • 주의할 점으로는 테이블을 결합하고 추출하는 과정에서 중복, 합산 등의 문제가 발생할 수 있으므로 데이터의 정합성을 체크하자.

[Chapter2]

효율적인 코딩 프로세스 작성하는 법

  • What tables do we need to pull from?
  • How should we combine the tables?
  • What fields do we need to create?
  • What filters need to be included?
  • Any ordering or limiting needed?

[Chapter3]

JOIN을 수행하거나 집계함수를 사용할 때, 변수의 형태가 알맞지 않는다면 에러가 발생한다.

이 때, CAST() 함수를 사용해 변수들의 유형을 변경하여, 알맞은 함수를 사용할 수 있도록 하자.

  • CAST(col AS DATATYPE)

한 변수 내에서 나타내는 문자열 값들이 모두 다르면, 혼동이 발생할 수가 있다.

이 때, 문자열의 다양한 함수를 사용하여 동일한 값들로 만들어주자.

 

<String 처리 함수들>

NULL() 값이 존재할 때, 이를 처리하기 위한 다양한 방법들이 존재한다.

  • WHERE 절에 IS NOT NULL을 사용함으로써, NULL 값이 아닌 값들만 추출한다.
  • COALESCE(col, 대체할 값) 을 사용함으로써, NULL 값에 값을 추가하여 처리한다.
  • CASE WHEN 을 사용함으로써, NULL 값을 처리한다.

데이터 중복이 존재할 때, 이를 처리하기 위한 다양한 방법들이 존재한다.

  • 중복을 제거하는 방법
  • JOIN 할 때, 조건을 더 주는 방법
  • 서브쿼리를 사용하여 ROLL UP을 활용하는 방법

데이터 정합성을 확인할 때, 원본 테이블의 총 합과 쿼리 후의 총 합을 비교하면 된다.

 

[Chapter4]

날짜 변수가 주어졌을 때, 이전, 이후와 같은 값들을 비교하면서 계산하는 방법들이 존재한다.

  • LAG(value, N) : 이전 데이터 N개를 추출
  • LEAD(value, N) : 이후 데이터 N개를 추출
  • OVER(ROWS BETWEEN N PRECIDING AND CURRENT ROW) : 이전 N개의 데이터부터 현재의 데이터까지 값 비교