본문 바로가기
코딩테스트/programming_SQL

[SQL] 년, 월, 성별 별 상품 구매 회원 수 구하기_131532

by prometedor 2023. 11. 17.

GROUP BY, DISTINCT, COUNT, YEAR, MONTH, JOIN, IS NOT NULL 이용

 

https://school.programmers.co.kr/learn/courses/30/lessons/131532

 

프로그래머스

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

programmers.co.kr

 

 

SELECT 
    YEAR(b.SALES_DATE) AS YEAR, 
    MONTH(b.SALES_DATE) AS MONTH, 
    a.GENDER, 
    COUNT(DISTINCT b.USER_ID) AS USERS
FROM USER_INFO a 
    JOIN ONLINE_SALE b
    ON a.USER_ID = b.USER_ID
WHERE a.GENDER IS NOT NULL
GROUP BY 1, 2, 3
ORDER BY 1, 2, 3;

 

문제 사항 : ONLINE_SALE 테이블에 같은 USER_ID 가 여러 개 있는 경우가 있어 COUNT 할 경우 중복 카운트 값이 발생하여 예상결과와 다르게 출력되었다.

 

해결 : DISTINCT 를 이용하여 USER_ID 중복을 제거하여 중복 카운트 값을 제거하였다.

 

깨달은 바 : 문제 사항을 파악하는데에 어려움이 있었다. ONLINE_SALE 테이블에서 USER_ID 가 여러 개 있는 것을 생각 하지 못하고 문제를 풀려고 했던 것이 아쉽다. 앞으로 문제 구조를 더 잘 파악할 수 있도록 해야겠다.