728x90
반응형
https://school.programmers.co.kr/learn/courses/30/lessons/131532#qna
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
해당 문제에서 주의할 점은 DISTINCT 부분이다.
마지막 예시에서
2022년 1월에 상품을 구매한 회원은 USER_ID 가 1(GENDER=1), 4(GENDER=0)인 회원들이고,
2022년 2월에 상품을 구매한 회원은 USER_ID 가 2(GENDER=NULL), 5(GENDER=1), 6(GENDER=1)인 회원들 이므로,
내용과 예시 테이블을 보면 "중복 구매에 대해 하나의 데이터로 처리한다."
-> USER_ID가 1번인 사용자가 1월에 여러 번 구매했어도 테이블로 나타낼 때에는 USER 한명으로 나타낸다는 것만 캐치하면 된다.
난 처음에 계속 왜 틀렸지 고민했었다. 문제를 자세히 읽지 않고 대충 풀고 넘어가려는 습관을 고쳐야 한다.
-- 코드를 입력하세요
-- 년, 월, 성별 별로 상품을 구매한 회원 수를 집계
SELECT YEAR(SALES_DATE) AS YEAR, MONTH(SALES_DATE) AS MONTH, GENDER, COUNT(DISTINCT A.USER_ID) AS USERS
FROM USER_INFO A
JOIN ONLINE_SALE B ON A.USER_ID = B.USER_ID
GROUP BY YEAR(SALES_DATE), MONTH(SALES_DATE), GENDER
HAVING GENDER IS NOT NULL
ORDER BY YEAR, MONTH, GENDER;
728x90
반응형
'알고리즘 > SQL' 카테고리의 다른 글
[SQL] 조건에 맞는 사원 정보 조회하기 (0) | 2025.05.16 |
---|---|
[SQL] 입양 시각 구하기 (2) (0) | 2025.05.09 |
[SQL] 재귀 CTE(Command Table Expression)를 이용한 계층적 구조 탐색 (0) | 2025.05.09 |
[SQL] 저자 별 카테고리 별 매출액 집계하기 (0) | 2025.05.08 |