[패스트캠퍼스 데이터 분석 부트캠프] 9주차_SQL 문법 (윈도우 함수)
2024. 4. 19. 09:36ㆍ패스트캠퍼스 BDA 13기
깜푸의 패스트캠퍼스 데이터분석 부트캠프 9주차 학습일지
RANK, DENSE_RANK, ROW_NUMBER
: 순서 표현
- RANK() OVER : 순위를 매기고 동일한 값이 있을 경우, 다음 순위는 건너뛴다 ex) 1,2,2,4 ...
- DENSE_RANK() OVER : 순위를 매기고 동일한 값이 있을 경우, 다음 순위를 건너뛰지 않는다 ex) 1,2,2,3 ...
- ROW_NUMBER() OVER : 순위와 상관없이 순서대로 각 행에 고유 번호를 부여한다 ex) 1,2,3,4 ...
※ 모두 (ORDER BY 절)과 함께 작성하여 어떤 기준으로 랭크 혹은 행번호를 부여할 것인지 명시해야함
ex) RANK() OVER (ORDER BY user_id ASC)
PARTITION BY
: 서브 그룹
- PARTITION BY : 서브 그룹의 기준으로 살펴볼 수 있다. 예를 들면 customer_id 별로 렌탈 횟수를 살펴보는 경우, 각 렌탈 횟수에 몇번째 렌탈인지 번호를 부여한다고 할 때
SELECT
customer_id,
rental_date,
COUNT(*) OVER (PARTITION BY customer_id ORDER BY rental_date
ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS rental_count
FROM DB
customer_id 별로 파티션을 나눠주고 rental_date로 정렬해준 뒤, 한 고객 당 누적 렌탈 횟수를 각각의 렌탈 건에 부여
LEAD, LEG
: 앞 뒤 값 가져오기
- LEG(column, n, default) : 현재 행을 기준으로 n 행 앞의 값을 가져옴
- LEAD(column, n, default) : 현재 행을 기준으로 n 행 뒤의 값을 가져옴
º n을 지정하지 않으면 기본으로 1
º 각각 앞 혹은 뒤에값이 없다면 default 값을 가져옴. default 값을 지정하지 않으면 null로 출력
※ 모두 (ORDER BY 절)과 함께 작성하여 어떤 기준으로 행을 정렬할 것인지 명시해야함
ex) LEG(customer_name, 1) OVER (ORDER BY customer_id ASC)
: customer_id 를 기준으로 오름차순 정렬한 순서대로 1개의 행 앞의 customer_name을 가져옴
NTILE
: 전체를 N 개의 그룹으로 나누기
- NTILE : 특정 컬럼을 기준으로 N개의 그룹을 생성할 수 있다
ex) NTILE(5) OVER (ORDER BY SUM(amount) DESC) -- 이미 customer_id별로 sum(amount)값이 정렬되어있다고 가정
: 고객별 총 구매가격이 높은 순서대로 1~5까지 등급을 부여
'패스트캠퍼스 BDA 13기' 카테고리의 다른 글
[패스트캠퍼스 데이터 분석 부트캠프] 12주차_Tableau를 이용한 시각화 (0) | 2024.05.10 |
---|---|
[패스트캠퍼스 데이터 분석 부트캠프] 11주차_Tableau (0) | 2024.05.03 |
[패스트캠퍼스 데이터 분석 부트캠프] 8주차_SQL 문법 (서브쿼리, 조인 활용) (0) | 2024.04.12 |
[패스트캠퍼스 데이터 분석 부트캠프] 7주차_SQL 기초 문법 (0) | 2024.04.08 |
[패스트캠퍼스 데이터 분석 부트캠프] 4주차_파이썬 제어문과 반복문(If문, While문, For문) (0) | 2024.04.08 |