본문 바로가기
Algorithm/SQL

[SQL] 데이터 캠프 수강 (10) - Analyzing Business Data in SQL

by 호찌민 2021. 5. 9.
  • Chapter 1: Revenue, cost and profit
  • Chapter 2: User-centric metrics
  • Chapter 3: Unit economics and distributions
  • Chapter 4: Generating an executive report

Chapter1

  • DATE_TRUNC(date_part, date)
    • ex) DATE_TRUNC('week', '2018-06-12')::DATE -> '2018-06-11'

 

Chapter2

  • MAU (Monthly Active User) : 한 달 동안 유저의 활동 수
    • 월별 고유 유저 수를 구하면 된다.
  • DAU (Daily Active User): 하루동안 유저의 활동 수
    • 일별 고유 유저 수를 구하면 된다.
  • 증감률 : 기준 대비 증감 비율
    • (비교하고자 하는 값 - 기준 값) / 기준 값
  • 유지율 : 지난 달부터 이번 달까지 유지 된 사용자의 비율
    • (지난 달과 이번 달 모두 활동한 사용자의 수) / (이전 달에 활동한 고유 사용자의 수)

 

Chapter3

  • ROUND(variable, num) : num에 음수 값을 사용한다면, 10^num 자리에 맞게 반올림된다.
  • PERCENTILE_CONT(분위수 값) WITHIN GROUP (ORDER BY variable ASC) : 연속형 변수의 백분위수 값 찾아준다.
    • ex) PERCENTILE_CONT(0.25) WITHIN GROUP (ORDER BY orders ASC)

 

Chapter4

  • TO_CHAR(DATE, TEXT) : 날짜형 타입을 문자열 타입으로 바꾸어서 출력한다.
    • ex) TO_CHAR('2018-06-01', 'Dy') : 'Fri'
  • CREATE EXTENSION : Python의 import와 같다.
    • ex) CREATE EXTENSION IF NOT EXISTS tablefunc;
  • CROSSTAB : Pivot Table을 만들어주는 함수
CREATE EXTENSION IF NOT EXISTS tablefunc;

SELECT * FROM CROSSTAB($$
	SELECT
    	meal_id,
        DATE_TRUNC('month', order_date) :: DATE AS delivr_month,
        COUNT(DISTINCT order_id) :: INT AS orders
	FROM orders
    GROUP BY meal_id, delivr_month
    ORDER BY meal_id, delivr_month$$)
    AS ct (meal_id INT, 
    	  "2018-06-01" INT, 
          "2018-07-01" INT) 
ORDER BY meal_id ASC;