본문 바로가기
프로그래머스 SQL 고득점 Kit/SELECT

[SQL] 재구매가 일어난 상품과 회원 리스트 구하기

by miiinn 2026. 2. 27.

 


[정답]

SELECT USER_ID, PRODUCT_ID
FROM ONLINE_SALE
GROUP BY USER_ID, PRODUCT_ID      -- 1. 회원과 상품을 한 쌍으로 묶는다.
HAVING COUNT(*) >= 2              -- 2. 그 쌍이 2개 이상(재구매)인 경우만 남긴다.
ORDER BY USER_ID ASC, PRODUCT_ID DESC; -- 3. 정렬 조건 적용

 

GROUP BY: 그룹으로 묶기

HAVING: 그룹 전용 필터, 이미 GROUP BY로 묶인 결과에 대해 조건을 걸 때

 

COUNT(*): 검색된 행(Row)의 전체 개수 반환 = COUNT(1)

 

  • NULL 포함: 특정 컬럼을 지정해서 COUNT(컬럼명)을 쓰면 그 컬럼이 비어있는(NULL) 데이터는 빼고 센다. 하지만 COUNT(*)는 NULL 값을 포함한 모든 행을 다 센다.
  • 중복 포함: 데이터 내용이 중복되더라도 한 줄, 두 줄... 행의 개수 그대로를 반환한다.

 

'프로그래머스 SQL 고득점 Kit > SELECT' 카테고리의 다른 글

[SQL] 역순 정렬하기  (0) 2026.02.27
[SQL] 평균 일일 대여 요금 구하기  (0) 2026.02.27
[SQL] SELECT 기본 구조  (0) 2026.02.27