문제 링크 : https://school.programmers.co.kr/learn/courses/30/lessons/131532
정상 코드.
SELECT YEAR(SALES_DATE) AS YEAR,
MONTH(SALES_DATE) AS MONTH,
GENDER,
COUNT(DISTINCT USER_ID) AS USERS
FROM ONLINE_SALE JOIN USER_INFO USING (USER_ID)
WHERE GENDER IS NOT NULL
GROUP BY YEAR, MONTH, GENDER
ORDER BY YEAR, MONTH, GENDER
내부 동작 순서
1. FROM 절
ONLINE_SALE 테이블과 USER_INFO 테이블을 USER_ID를 사용하여 조인합니다.
2. WHERE 절
GENDER가 NULL이 아닌 경우를 필터링합니다.
3. GROUP BY 절
문제 조건인 연월은 상품 구매일이자 판매일인 "SALES_DATE" 컬럼의 연, 월을 뜻한다.
연도(YEAR), 월(MONTH), 성별(GENDER) 별로 그룹화하여 각 그룹에 대한 사용자 수를 계산합니다.
SELECT 절에서 사용한 별칭(YEAR, MONTH)도 그룹화에 사용됩니다.
4. SELECT 절
SALES_DATE에서 YEAR와 MONTH를 추출하고, 그리고 USER_INFO 테이블에서 GENDER를 선택합니다. 마지막으로 각 연도(YEAR), 월(MONTH), 성별(GENDER) 별로 고유한 사용자 수(USERS)를 계산합니다.
(DISTINCT를 사용하는 이유는 위 이미지에서 연도 22, 월 3, 성별 0(남자)의 경우를 표본으로 하여( 빨간색 상자 ) 확인할 수 있다. 그룹핑의 기준은 노란색 상자 인 연, 월, 성별이므로 USER_ID가 같은 68의 경우 파란색 글자 1로 카운팅이 되어야 한다.)
5. ORDER BY 절
연도(YEAR), 월(MONTH), 성별(GENDER)을 기준으로 오름차순(디폴트) 정렬합니다.
초기 코드
SELECT YEAR(SALES_DATE) AS YEAR,
MONTH(SALES_DATE) AS MONTH,
GENDER,
COUNT(*) AS USERS
FROM USER_INFO JOIN ONLINE_SALE USING(USER_ID)
WHERE GENDER IS NOT NULL
GROUP BY YEAR(SALES_DATE), MONTH(SALES_DATE), GENDER
ORDER BY YEAR, MONTH, GENDER
=>오류
잘못된 결괏값
오류 원인
1. 데이터를 정렬 및 출력해 눈으로 보는 습관
'◖코딩 테스트◗▬▬▬▬▬▬▬▬▬ > 프로그래머스' 카테고리의 다른 글
[SQL KIT] (2024) 입양 시각 구하기(2)(설명/코드/정답) (0) | 2024.01.26 |
---|---|
[SQL KIT] (2024) 입양 시각 구하기(1)(설명/코드/정답) (0) | 2024.01.26 |
[SQL KIT](2024) 식품분류별 가장 비싼 식품의 정보 조회하기(설명/코드/정답) (0) | 2024.01.25 |
[SQL KIT] (2024) 대여 횟수가 많은 자동차들의 월별 대여 횟수 구하기(설명/코드/정답) (0) | 2024.01.24 |
[프로그래머스] 깃허브 자동 커밋 연동(2024) (4) | 2024.01.23 |