본문 바로가기

[패스트캠퍼스] 데이터 분석 부트캠프 13기

[BDA_13기] 9주차_학습일지

 

 

SQL 강의를 시작한지도 벌써 2주라는 시간이 흘렀습니다!

이번주는 코딩 테스트 대비를 위한 문제 풀이와 윈도우 함수 강의가 있었습니다. 

 

 

# 데이터 분석가 필수 Tool SQL_이준희 강사님

 

 

 

 

✔️ RANK(), DENSE_RANK(), ROW_NUMBER() 

 

 

 

 

 

 

 

 

📌 RANK() OVER (): 순위를 매기되, 동일한 값이 있을 경우 같은 순위를 부여한 후 다음 순위는 건너뛴다. 

📌 DENSE_RANK() OVER(): 순위를 매기되, 동일한 값이 있을 경우 같은 순위를 부여한 후 다음 순위는 건너뛰지 않는다.

📌 ROW_NUMBER(): 순위와 상관없이 각 행에 고유한 번호를 부여한다. 

 

 

 

 

 

✔️ PARTITION BY, ORDER BY, ROWS/RANGE

 

 

 

 

 

 

📌 PARTITION BY: 각 행을 유지하면서 각 행에 대한 그룹 내 계산을 수행한다. 

 ex) customer_id별 rental 횟수

📌 ORDER BY: PARTITION BY에 의해 생성된 각 그룹 내에서 테이터 순서를 지정한다. 

 ex) customer_id별 rental 횟수를 rental_date 순으로 정렬

📌 ROWS/RANGE: 현재 행을 기준으로 포함될 행의 범위를 지정한다.

 ROWS: 물리적 행 위치를 기준으로 범위 설정

 RANGE: 값의 범위를 기준으로 범위 설정

  • UNBOUNDED PRECEDING: 파티션의 첫 행부터 시작
  • UNBOUNDED FOLLOWING: 파티션의 마지막 행까지
  • CURRENT ROW: 현재 행 포함
  • n PRECEDING/FOLLOWING: 현재 행에서 n행 앞이나 뒤

 

 

 

 

✔️ LEAD(), LAG(), FIRST_VALUE(), LAST_VALUE() 

📌 LEAD():  현재 행을 기준으로 n행 뒤의 값을 가져온다. (default: 1)

📌 LAG(): 현재 행을 기준으로 n행 앞의 값을 가져온다. (default: 1)

 

 

📌 FIRST_VALUE(): 파티션된 윈도우에서 첫번째 값을 가져온다.

📌 LAST_VALUE(): 파티션된 윈도우에서 마지막 값을 가져온다 

 - 범위를 지정해줘야 한다. 

 

 

 

 

 

✔️ PERCENT_RANK(), CUME_DIST(), NTILE()

 

📌 PERCENT_RANK()

  : 행의 백분위 순위를 계산한다 (0~1 사이의 값)

📌 CUME_DIST()

  : 행의 누적 분포를 계산한다. (0~1 사이의 값)

 

 

 

 

 

📌 NTILE(): 행을 n개의 그룹으로 분할한다.