Coding Test/SQL 연습 문제

프로그래머스/MySQL - SELECT 09. 재구매가 일어난 상품과 회원 리스트 구하기

parkes811 2023. 1. 6. 22:24
 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

  • 문제 설명 

 

  • 문제 및 예시

 

  • 코드 및 문제 풀이
SELECT USER_ID, PRODUCT_ID
FROM ONLINE_SALE
GROUP BY USER_ID,PRODUCT_ID
HAVING COUNT(USER_ID) > 1 AND COUNT(PRODUCT_ID) > 1
ORDER BY USER_ID ASC, PRODUCT_ID DESC

- 문제에서 테이블에서 동일한 회원이 동일한 상품을 재구매한 데이터를 구하라고 했으니까 동일한 회원과 제품이 2이상인 그룹으로 GROUP BY ~ HAVING절을 이용해 만들어주면됩니다.

- 그 후 USER_ID, PRODUCT_ID 순으로 정렬하면 됩니다.

 

  • GROUP BY 절

- GROUP BY 절은 선택된 레코드의 집합을 필드의 값이나 표현식에 의해 그룹화한 결과 집합을 반환합니다.

- 즉, GROUP BY 절은 하나의 그룹을 하나의 레코드로 반환하므로, 결과 집합의 크기를 줄여주는 역할을 합니다.

 
  • HAVING

- HAVING 절은 SELECT 문의 WHERE 절처럼 GROUP BY 절에 의해 반환되는 결과 집합의 조건을 설정할 수 있게 해줍니다.