Coding Test

(SQL > SELECT) : 2일차 재구매가 일어난 상품과 회원 리스트 구하기

Santino 2025. 2. 6. 11:34

01:00

 

* 잘 몰랐던 부분 정리 (페이지 하단에 이미지와 정리되어 있음)
- 조건문 where, having 차이(중요)

1. 시점

where은 group by전에 적용(group by없어도 사용 가능)

having은 group by이후에 적용(group by 필수)

2. group by 문

where은 group by 문에 COUNT()같은 함수 사용 불가

having은 group by 문에 COUNT(), SUM()같은 함수 사용 가능

# 집계 함수 : COUNT(), SUM() 

 

 

 

1. 최초 내가 작성한 코드

* 잘 몰랐던 부분

-WHERE에 조건 사용하는 부분에서 어떤 함수를 사용해야 될지

-WHERE, HAVING 차이

# 1. 동일한 회원이 동일한 상품을 재구매한 데이터 구하기
# 2. 재구매한 회원 ID와 상품 ID 출력 SQL 문
# 3. 결과는 회원 ID기준 오름차순 정렬 / 회원 ID가 같은 경우, 상품 ID기준 내림차순

SELECT USER_ID, PRODUCT_ID
FROM ONLINE_SALE
WHERE COUNT(USER_ID) > 1
ORDER BY USER_ID ASC AND PRODUCT_ID DESC;

 

 

 

2. 정답

@학습 필요

1)GROUP BY로 연관 테이블 묶기 --> 테이블1개로 묶을 수도 있고, 여러개로 묶을 수도 있음

2) having이라는 절에 대해서 공부하기 --> 위에 정리함 where, having

3) ORDER BY 

(ORDER BY USER_ID ASC AND PRODUCT_ID DESC 이렇게 사용해서 틀렸음 --> AND는 사용 불가하고 , 콤마 사용해야함)

SELECT USER_ID, PRODUCT_ID
FROM ONLINE_SALE
GROUP BY USER_ID, PRODUCT_ID    ----> 1.여기서 GROUP BY로 묶은 row들 중에
having count(USER_ID)>1         ----> 2. count(USER_ID)>1인 조건을 필터링
ORDER BY 1 ASC, 2 DESC

 

 

**참고

 

 

* 잘 몰랐던 부분 정리 (이미지 참조하기)
- 조건문 where, having 차이(중요)

1. 시점

where은 group by전에 적용(group by없어도 사용 가능)

having은 group by이후에 적용(group by 필수)

2. group by 문

where은 group by 문에 COUNT()같은 함수 사용 불가

having은 group by 문에 COUNT(), SUM()같은 함수 사용 가능