년, 월, 성별 별 상품 구매 회원 수 구하기
문제 출처
코딩테스트 연습 - 년, 월, 성별 별 상품 구매 회원 수 구하기 | 프로그래머스 스쿨 (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절을 주고싶다면 순서만 주의하고 삽입하면 된다.
티스토리와 깃허브 홈
오류나 궁금하신점은
아래 댓글로 알려주시면 감사하겠습니다.
'프로그래머스' 카테고리의 다른 글
(MySQL / 프로그래머스) 가격대 별 상품 개수 구하기 (0) | 2023.10.05 |
---|---|
(MySQL / 프로그래머스) 입양 시각 구하기(2) (0) | 2023.10.05 |
(MySQL / 프로그래머스) 입양 시각 구하기(1) (1) | 2023.10.04 |
(MySQL / 프로그래머스) 동명 동물 수 찾기 (0) | 2023.10.04 |
(MySQL / 프로그래머스) 고양이와 개는 몇 마리 있을까? (0) | 2023.10.04 |