문제
다음 [판매] 테이블에서 SQL문을 실행했을 때, 상품명이 'B'인 행의 dense_rk 값을 쓰시오.
| 상품명 | 카테고리 | 수량 |
|---|---|---|
| A | 전자 | 150 |
| B | 전자 | 120 |
| C | 의류 | 120 |
| D | 전자 | 180 |
| E | 의류 | 100 |
SQLSELECT 상품명, DENSE_RANK() OVER (PARTITION BY 카테고리 ORDER BY 수량 DESC) AS dense_rk FROM 판매;
정답
3
3
해설
DENSE_RANK() 함수는 PARTITION BY로 카테고리별로 나누어 순위를 매긴다.
1단계: 카테고리별로 데이터 분할
- 전자 카테고리: A(150), B(120), D(180)
- 의류 카테고리: C(120), E(100)
2단계: 각 카테고리 내에서 수량 기준 내림차순 정렬
- 전자 카테고리: D(180) → A(150) → B(120)
- 의류 카테고리: C(120) → E(100)
3단계: DENSE_RANK() 순위 부여
- 전자 카테고리에서 D(180)=1위, A(150)=2위, B(120)=3위
따라서 상품명 'B'의 dense_rk 값은 3이다.