(SQL > SELECT) : 2일차 재구매가 일어난 상품과 회원 리스트 구하기
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()같은 함수 사용 가능