본문 바로가기
문제풀이

[문제풀이] 년, 월, 성별 별 상품 구매 회원 수 구하기

by kime2 2024. 1. 25.

 

출처
 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

문제

USER_INFO 테이블과 ONLINE_SALE 테이블에서 년, 월, 성별 별로 상품을 구매한 회원수를 집계하는 SQL문을 작성해주세요. 결과는 년, 월, 성별을 기준으로 오름차순 정렬해주세요. 이때, 성별 정보가 없는 경우 결과에서 제외해주세요.

문제에 대한 해석

-- 조회: 테이블에서 년, 월, 성별 별로 상품을 구매한 회원수를 집계
-- 정렬: 년, 월, 성별을 기준으로 오름차순
-- 조건: 성별 정보가 없는 경우 결과에서 제외

 

풀이(MYSQL)

select Year(o.sales_date), month(o.sales_date), u.gender,count(distinct(o.user_id))
from user_info u join online_sale o on u.user_id = o.user_id
where u.gender is not null
group by 1,2,3
order by 1,2,3

 

작동순서

💡SQL 실행 순서는 From -> Where -> Group by -> Having -> Select -> Order by ->결과반환

  1. FROM 절:  user_info와 online_sale를 user_id기준으로 inner join
  2. WHERE 절: gender의 데이터가 null값이 없는걸로 필터링
  3. GROUP BY 절:sales_date의 년도별, 월별, gender별로 그룹화
  4. SELECT 절: sales_date의 년도, sales_date의 월, gender 별 고유의 user_id 수 조회
  5. ORDER BY 절: sales_date의 년도, sales_date의 월, gender 의 오름차순

배운점

  • 회원수를 구하는 것이 목적이므로 중복되는 user_id를 제외한 distinct로 집계
 

'문제풀이' 카테고리의 다른 글

Pandas와 SQL 11~13번 문제  (0) 2024.03.21
Pandas와 SQL 5~10번 문제  (0) 2024.03.20
Pandas와 SQL 1~4번 문제  (0) 2024.03.19