안녕하세요 오늘은 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회를, 이런 식으로 계속 증가하게 됩니다.
감사합니다. :)
'데이터분석가(Data Analyst)' 카테고리의 다른 글
| [패스트캠퍼스 데이터분석 부트캠프 15기] 9회차 학습 블로그_Tableau(테블로) 설치 및 실습 (0) | 2024.09.06 |
|---|---|
| [패스트캠퍼스 데이터분석 부트캠프 15기] 8회차 학습 블로그_SQL 프로젝트_OLIST E-COMMERCE DATASET (0) | 2024.08.30 |
| [패스트캠퍼스 데이터분석 부트캠프 15기] 6회차 학습 블로그_SQL 응용 (0) | 2024.08.09 |
| [패스트캠퍼스 데이터분석 부트캠프 15기] 5회차 학습 블로그_맥북 M1 Homebrew 설치, MYSQL 설치, SQL 기본 문법 (0) | 2024.08.02 |
| [패스트캠퍼스 데이터분석 부트캠프 15기] 4주차 학습 블로그_Python, API (0) | 2024.07.12 |