728x90
힌트
- 날짜 처리
- TO_CHAR(SALES_DATE, 'YYYY')와 TO_NUMBER(TO_CHAR(SALES_DATE, 'MM'))를 사용하여 날짜에서 연도와 월을 추출합니다.
- 이는 후속 집계 및 정렬을 용이하게 합니다.
- JOIN 사용
- USER_INFO 테이블과 ONLINE_SALE 테이블을 USER_ID를 기준으로 조인하여 판매와 관련된 사용자 정보를 결합합니다.
- 이를 통해 판매 기록에 대한 사용자 정보를 확보할 수 있습니다.
- 조건 필터링
- WHERE GENDER IS NOT NULL 조건을 사용하여 성별 정보가 없는 레코드는 제외합니다.
- 이를 통해 결과의 정확성을 높입니다.
- 그룹화와 집계
- GROUP BY 절을 통해 연도, 월, 성별에 따라 데이터를 그룹화하고, 각 그룹의 고유 사용자 수를 계산합니다.
- COUNT(DISTINCT U.USER_ID)를 사용하여 중복되지 않는 사용자 수를 세어 사용자의 다양성을 평가합니다.
- 정렬
- 최종 결과는 연도, 월, 성별 순서로 정렬되어 가독성을 높이고 분석하기 쉽게 합니다.
정답은 더보기 클릭
더보기
SELECT TO_CHAR(SALES_DATE, 'YYYY') AS YEAR, TO_NUMBER(TO_CHAR(SALES_DATE, 'MM')) AS MONTH,
GENDER, COUNT(DISTINCT U.USER_ID) AS USERS
-- 판매 날짜(SALES_DATE)에서 연도(YYYY)와 월(MM) 정보를 추출하고,
-- 성별(GENDER)별로 고유 사용자 수(USERS)를 계산합니다.
FROM USER_INFO U
JOIN ONLINE_SALE O
ON U.USER_ID = O.USER_ID
-- 성별이 NULL이 아닌 데이터만 포함합니다.
WHERE GENDER IS NOT NULL
-- 연도, 월, 성별을 기준으로 그룹화합니다.
GROUP BY TO_CHAR(SALES_DATE, 'YYYY'), TO_NUMBER(TO_CHAR(SALES_DATE, 'MM')), GENDER
-- 결과를 연도, 월, 성별 순으로 정렬합니다.
ORDER BY YEAR, MONTH, GENDER
728x90
'프로그래머스(Oracle)' 카테고리의 다른 글
[프로그래머스 (Oracle)] 저자 별 카테고리 별 매출액 집계하기 (2) | 2024.10.09 |
---|---|
[프로그래머스 (Oracle)] 조건에 맞는 사용자 정보 조회하기 (0) | 2024.10.06 |
[프로그래머스 (Oracle)] 즐겨찾기가 가장 많은 식당 정보 출력하기 (1) | 2024.10.05 |
[프로그래머스 (Oracle)] 취소되지 않은 진료 예약 조회하기 (2) | 2024.10.05 |
[프로그래머스 (Oracle)] 서울에 위치한 식당 목록 출력하기 (2) | 2024.10.03 |