데이터분석가(Data Analyst)

[패스트캠퍼스 데이터분석 부트캠프 15기] 7회차 학습 블로그_SQL 응용

diary536 2024. 8. 16. 12:39

안녕하세요 오늘은 7회차 학습 블로그로, 이번 주에 배운 SQL 실습 내용을 정리하여 올립니다 :)

 

이번주는 SQL window 함수를 배우고 실습하였는데, 내용과 예제 문제는 아래와 같습니다.

 

1. RANK(), DENSE_RANK(), ROW_NUMBER()

 

1-1. 영화 길이에 따른 순위 매기기

위의 쿼리를 실행하면 아래의 결과를 얻을 수 있다.

RANK 함수를 실행하면, 동일한 값이 있을 경우 같은 순위를 부여하고 다음 순위는 건너뜁니다. 

DENSE_RANK 함수를 실행하면, 동일한 값이 있을 경우 같은 순위를 부여하고 다음 순위는 건너뛰지 않습니다.

ROW_NUMBER 함수를 실행하면, 순위와 상관없이 각 행에 고유한 번호를 부여합니다.

 

2. PARTITION BY, ORDER BY, ROWS/RANGE

 

2-1.고객별, 대여 날짜별 누적 대여 횟수 계산

고객별, 대여 날짜별 누적 대여 횟수 계산

위의 쿼리를 실행하면 다음과 같은 결과를 얻을 수 있습니다.

 

위 구문은 각 행에 대해 정의된 윈도우(여기서는 각 고객별로, 그리고 렌탈 날짜 순으로) 내에서 COUNT(*) 를 계산합니다.

PARTITION BY customer_id 는 결과를 각 고객별로 분리하여 집계하라는 것을 의미하며, ORDER BY rental_date 는

각 고객의 렌탈 데이터를 날짜 순서대로 정렬하도록 합니다,

 

ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW 는 각 행에 대해,

그 행을 포함하여 그 이전의 모든 행을 윈도우의 범위로 설정합니다.

 

cumulative_rentals 값은 각 고객이 첫 번째 렌탈부터 현재 렌탈까지 누적하여 렌탈한 횟수를 나타냅니다. 첫 번째 행에서는 렌탈 1회를, 두 번째 행에서는 렌탈 2회를, 이런 식으로 계속 증가하게 됩니다.

 

감사합니다. :)

반응형