미소를뿌리는감자의 코딩
[프로그래머스 2024/01/26] 재구매가 일어난 상품과 회원 리스트 구하기 본문
728x90
https://school.programmers.co.kr/learn/courses/30/lessons/131536
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
1. 접근 방법
이번 문제는 order by USER_ID, PRODUCT_ID desc을 한 후, 이를 count(*)를 하는 것에 포인트가 있는 문제이다.
USER_ID 와 PRODUCT_ID 가 같은 녀석끼리 묶이기 때문에, 자연스럼게 재구매한 회원 id와 재구매한 상품 id를
count(*)로 구할 수 있다. 만약 count(*)가 2 이상이면, 출력하도록 한다.
처음에 단계별로 올라가면서 코드를 짜다보니 뭔가 지저분하게 코드가 짜여져서 다시 한번 짜보려고 한다.
다시 짜보았다. 이렇게 깔끔해질수가...
정말... 충격적이다...!!!!
+ having의 위력이 대단하다. select로 다시 감쌀 필요가 없어져서 굉장히 편해진당...
* having : 그룹화된 결과에 대한 조건 적용.
2. 코드
(전)
-- 코드를 입력하세요
SELECT c.USER_ID, c.PRODUCT_ID from (
SELECT a.user_id, a.product_id, count(*) as ccnt from ONLINE_SALE a
inner join(
SELECT user_id, count(*) as cnt from ONLINE_SALE o
group by user_id) b on a.USER_ID = b.USER_ID
where cnt>=2
group by a.user_id, a.product_id) c
where ccnt >=2
order by USER_ID, PRODUCT_ID desc
(후)
SELECT USER_ID, PRODUCT_ID from ONLINE_SALE
group by USER_ID, PRODUCT_ID
HAVING count(*)>=2
order by USER_ID, PRODUCT_ID desc
728x90
'코딩 테스트 > 프로그래머스' 카테고리의 다른 글
[프로그래머스 2024/01/26] 자동차 종류 별 특정 옵션이 포함된 자동차 수 구하기 (0) | 2024.01.26 |
---|---|
[프로그래머스 2024/01/26] 가격대 별 상품 개수 구하기 (0) | 2024.01.26 |
[프로그래머스 2024/01/26] 자동차 평균 대여 기간 구하기 (1) | 2024.01.26 |
[프로그래머스 2024/01/26] 과일로 만든 아이스크림 고르기 (0) | 2024.01.26 |
[프로그래머스 2024/01/26] 자동차 대여 기록에서 장기/단개 대여 구분하기 (0) | 2024.01.26 |