반응형
문제
ONLINE_SALE 테이블에서 동일한 회원이 동일한 상품을 재구매한 데이터를 구하여, 재구매한 회원 ID와 재구매한 상품 ID를 출력하는 SQL문을 작성해주세요. 결과는 회원 ID를 기준으로 오름차순 정렬해주시고 회원 ID가 같다면 상품 ID를 기준으로 내림차순 정렬해주세요.
구조
ONLINE_SALE_ID, USER_ID, PRODUCT_ID, SALES_AMOUNT, SALES_DATE는 각각 온라인 상품 판매 ID, 회원 ID, 상품 ID, 판매량, 판매일을 나타냅니다.
예시
처음에 작성한 쿼리
select
user_id,
product_id
from online_sale
group by user_id, product_id
where count(product_id) > 1
order by user_id, product_id desc
틀린 이유
그룹 함수에 쓰이는 조건은 Where이 아니라 Having을 씁니다. 그동안 Group by를 많이 쓴 것 같은데 Having은 처음 써보네요..! 난이도 조절이 탁월한 것 같습니다.
수정한 쿼리
select
user_id,
product_id
from online_sale
group by user_id, product_id
having count(product_id) > 1
order by user_id, product_id desc
Where을 Having으로 고쳐서 완료했습니다.
user_id와 product_id를 기준으로 그룹화 시킨 해당 조합의 개수가 1개보다 많은 경우를 출력하면 문제에서 원하는 결과를 얻을 수 있습니다.
문제 출처 : https://school.programmers.co.kr/learn/courses/30/lessons/131536
반응형
'코딩테스트 > Oracle DB' 카테고리의 다른 글
[Oracle] 프로그래머스 : 가격대 별 상품 개수 구하기 (1) | 2024.01.09 |
---|---|
[Oracle] 프로그래머스 : 상품 별 오프라인 매출 구하기 (1) | 2023.12.22 |
[Oracle] 프로그래머스 : 진료과별 총 예약 횟수 출력하기 (0) | 2023.12.22 |
[Oracle] 성분으로 구분한 아이스크림 총 주문량 (프로그래머스) (0) | 2023.12.21 |
[Oracle] 조건에 맞는 도서와 저자 리스트 출력하기 (프로그래머스) (1) | 2023.12.21 |