📝 Language: Oracle
1
2
3
4
5
6
7
8
9
10
|
SELECT USER_ID,
PRODUCT_ID
FROM ONLINE_SALE
GROUP BY USER_ID,
PRODUCT_ID
HAVING COUNT(*)>1
ORDER BY USER_ID,
PRODUCT_ID DESC
;
|
🙂 확인 사항
1. ONLINE_SALE 테이블
2. 동일한 회원이 동일한 상품을 재구매한 데이터
3. 재구매한 회원 ID, 재구매한 상품 ID 출력
4. 회원ID 기준 오름차순 → 상품ID 기준 내림차순 정렬
😮 이 외의 풀이
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
WITH CONDITIONS AS (
SELECT USER_ID,
PRODUCT_ID,
COUNT(*) COUNT_PRODUCT
FROM ONLINE_SALE
GROUP BY USER_ID,
PRODUCT_ID
)
SELECT USER_ID,
PRODUCT_ID
FROM CONDITIONS
WHERE COUNT_PRODUCT > 1
ORDER BY USER_ID,
PRODUCT_ID DESC
;
|
공통 표현식 사용
1
2
3
4
5
6
7
8
9
10
11
12
13
|
SELECT DISTINCT USER_ID,
PRODUCT_ID
FROM (
SELECT USER_ID,
PRODUCT_ID,
COUNT(*) OVER (PARTITION BY USER_ID, PRODUCT_ID) AS COUNT_PRODUCT
FROM ONLINE_SALE
)
WHERE COUNT_PRODUCT > 1
ORDER BY USER_ID,
PRODUCT_ID DESC
;
|
Inline View + Window Function
🚨 Window 함수는
- 개별 행마다 계산하므로 Group by보다 비효율적일 수 있음
- Distinct의 추가 작업이 필요하므로 비효율적일 수 있음
🔗 소스 코드
GitHub
📚 참고 자료
'Computer > Algorithm_SQL' 카테고리의 다른 글
[Algorithm_SQL] 진료과별 총 예약 횟수 출력하기 (Success) (0) | 2023.10.08 |
---|---|
[Algorithm_SQL] 조건에 맞는 도서와 저자 리스트 출력하기 (Success) (1) | 2023.10.08 |
[Algorithm_SQL] 상품 별 오프라인 매출 구하기 (Success) (1) | 2023.10.04 |
[Algorithm_SQL] 가격대 별 상품 개수 구하기 (Success) (0) | 2023.10.03 |
[Algorithm_SQL] 카테고리 별 상품 개수 구하기 (Success) (0) | 2023.10.02 |