문제
ONLINE_SALE 테이블에서 동일한 회원이 동일한 상품을 재구매한 데이터를 구하여, 재구매한 회원 ID와 재구매한 상품 ID를 출력하는 SQL문을 작성해주세요. 결과는 회원 ID를 기준으로 오름차순 정렬해주시고 회원 ID가 같다면 상품 ID를 기준으로 내림차순 정렬해주세요.
user_id, product_id를 묶어 그룹화하고 그룹한 정보수가 1회 초과(2회 이상) 있는 것을 조건으로 한다.
1)전체 조회했을때
SELECT user_id,product_id
from online_sale
order by user_id, product_id desc

2)그룹화만 했을때 (15 보면 된다)
SELECT user_id,product_id
from online_sale
group by user_id, product_id
order by user_id, product_id desc

3)having 절 넣어서 그룹한 정보 수가 1개를 초과했을 때만 조회(정답)
SELECT user_id,product_id
from online_sale
group by user_id, product_id
having count(*)>1
order by user_id, product_id desc

HAVING
group by 절과 함께 사용되며 그룹화된 결과에 조건을 적용하는 역할로
일반적으로 having 절은 집계함수와 함계 사용된다.
having 절은 where 절과 유사하게 조건을 지정하지만, where 절은 개별 레코드에 대한 조건을 검사하고 having 절은 그룹화된 결과 집합에 조건을 검사한다. 출처
'SQL' 카테고리의 다른 글
| SQL 프로그래머스 59404 여러 기준으로 정렬하기 (0) | 2024.01.18 |
|---|---|
| SQL 프로그래머스 59405 상위 n개 레코드 (0) | 2024.01.18 |
| SQL 프로그래머스 59408 중복 제거하기 (0) | 2024.01.17 |
| SQL 프로그래머스 131115 가격이 제일 비싼 식품의 정보 출력하기 (0) | 2024.01.17 |
| SQL 프로그래머스 59415 최댓값 구하기/59038 최솟값 구하기 (0) | 2024.01.17 |