본문 바로가기

프로그래머스

(MySQL / 프로그래머스) 년, 월, 성별 별 상품 구매 회원 수 구하기

728x90
반응형
SMALL


년, 월, 성별 별 상품 구매 회원 수 구하기


 



문제 출처

코딩테스트 연습 - 년, 월, 성별 별 상품 구매 회원 수 구하기 | 프로그래머스 스쿨 (programmers.co.kr)

 

프로그래머스

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

programmers.co.kr



Code

SELECT YEAR(B.SALES_DATE) AS YEAR, MONTH(B.SALES_DATE) AS MONTH, GENDER, COUNT(DISTINCT B.USER_ID) AS USERS
FROM USER_INFO A INNER JOIN ONLINE_SALE B ON A.USER_ID = B.USER_ID	
GROUP BY YEAR, MONTH, GENDER
HAVING A.GENDER IS NOT NULL
ORDER BY YEAR, MONTH, GENDER 

#USER_INFO 테이블과 ONLINE_SALE 테이블에서 
#---> FROM에 나올 테이블을 설명해주고있다.

#년, 월, 성별 별로 상품을 구매한 회원수를 집계하는 SQL문을 작성
#---> SELECT문에 나올 것들을 설명해 주고있다.

#결과는 년, 월, 성별을 기준으로 오름차순 정렬해주세요. 
#---> 정렬방법에대해 설명해 주고있다.

#이때, 성별 정보가 없는 경우 결과에서 제외해주세요.
#---> 조건문을 설명해 주고있다.


Code설명 & TIPS


풀이 방법!

USER_INFO 테이블과 ONLINE_SALE 테이블에서 

---> FROM에 나올 테이블을 설명해주고있다.

 

년, 월, 성별 별로 상품을 구매한 회원수를 집계하는 SQL문을 작성

---> SELECT문에 나올 것들을 설명해 주고있다.

 

결과는 년, 월, 성별을 기준으로 오름차순 정렬해주세요. 

---> 정렬방법에대해 설명해 주고있다.

 

이때, 성별 정보가 없는 경우 결과에서 제외해주세요.

---> 조건문을 설명해 주고있다.

 

 


 

설명!

차근차근 풀다보면 딱히 어려운 것은 없었다.

 

다만 COUNT(DISTINCT B.USER_ID)

즉 DISTINCT를 설정해 줘야지 중복된 것들을 제거하고 카운트를 하니

이것이 문제를 틀리게 하는 함정이라고 볼 수 있을 듯 하다.

 

 

나처럼 HAVING절을 이용하여 조건을 줘도 되지만

 

 

WHERE절을 이용하여 조건을 줘도 문제를 푸는데에는 상관 없다.

 

SELECT YEAR(B.SALES_DATE) AS YEAR, MONTH(B.SALES_DATE) AS MONTH, GENDER, COUNT(DISTINCT B.USER_ID) AS USERS

FROM USER_INFO A INNER JOIN ONLINE_SALE B ON A.USER_ID = B.USER_ID

WHERE A.GENDER IS NOT NULL

GROUP BY YEAR, MONTH, GENDER

ORDER BY YEAR, MONTH, GENDER

 

이렇게 WHERE절을 주고싶다면 순서만 주의하고 삽입하면 된다.

 

 

 

 

 

 

티스토리와 깃허브 홈
 

학스의 개발일지

안녕하세요 일상과 코딩공부를 올리고 있는 JAVA개발자 학스입니다. 저는 주로 JAVA, jQuery, PostgreSQL, HIVE을 다루고 있고 코딩테스트공부도 병행중입니다. 제 깃허브 주소인 https://github.com/hacs2772에

hacs2772.tistory.com

 

 

hacs2772 - Overview

개발왕 학스. hacs2772 has 8 repositories available. Follow their code on GitHub.

github.com

 

 

오류나 궁금하신점은
아래 댓글로 알려주시면 감사하겠습니다.

 

 

 

 

728x90
반응형
LIST