Technique/MySQL

[Lv.2] 재구매가 일어난 회원 리스트 [group by, having, count]

먼치 2024. 5. 6. 18:45
문제 파악

  • 출력할 컬럼 : 재구매한 회원 ID, 재구매한 상품 ID ⇒ SELECT
  • 데이터를 가져올 테이블 : ONLINE_SALE ⇒ FROM
  • 조회 순서 : 회원 ID 기준 오름차순, 같다면 상품 ID 기준 내림차순 ⇒ ORDER BY
  • 적용할 조건 : “동일한 회원”이 “동일한 상품”을 재구매한 데이터 count ⇒ COUNT

 

문제 해결 과정

 

💡 Group by, Having

아래 글 참고! 

 

동명 동물 수 찾기 [group by, having]

문제 파악 출력할 컬럼 : 동물의 이름, 이름이 쓰인 횟수 ⇒ SELECT 데이터를 가져올 테이블 : ANIMAL_INS ⇒ FROM 조회 순서 : 이름 순 ⇒ ORDER BY 집계할 내용 : 이름이 없는 동물을 제외하고, 이름이 쓰

seheehee.tistory.com

 

Group by에 여러 개의 컬럼을 넣어 그룹화하기

⇒ group by에 여러 개의 컬럼을 넣어 다양한 경우의 수로 그룹화할 수 있다.

group by 성별, 나이
# => 성별과 나이가 동일한 그룹으로 그룹화 가능

 

 

 

💡 Count

✅ 갯수를 세어주는 집계함수

→ 아래 게시글 참고! 

 

동명 동물 수 찾기 [group by, having]

문제 파악 출력할 컬럼 : 동물의 이름, 이름이 쓰인 횟수 ⇒ SELECT 데이터를 가져올 테이블 : ANIMAL_INS ⇒ FROM 조회 순서 : 이름 순 ⇒ ORDER BY 집계할 내용 : 이름이 없는 동물을 제외하고, 이름이 쓰

seheehee.tistory.com

 

 

 

문제 해결
  1. group by로 그룹화
  2. Having 조건으로 출력 조건 걸기 ⇒ count(*) 가 2 이상인 row만 출력
  3. count 집계함수로 group by로 그룹화 한 그룹 별 개수 확인

 

 

> 완성 코드

select user_id, product_id
from online_sale
group by user_id, product_id
having count(*)>1
order by user_id, product_id desc;