일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- 프로그래머스
- 코오롱베네트
- 데이터문해력
- 얼음여왕
- 명상
- 독서
- 벚꽃
- 티스토리
- 수명예측 인공지능
- 알파줄거리
- 데이터 분석
- 니다
- 미라클 모닝
- 코딩
- GA4
- 기사스크랩
- 구글애널리틱스
- 구글애널리틱스4
- 6시 기상
- 채용공고
- GA
- ㅂㅂ
- 감사인사
- Google Analytics
- Python
- 벚꽃개화시기
- 영화 올드 줄거리
Archives
- Today
- Total
Data Analyst KIM
[MySQL] 년, 월, 성별 별 상품 구매 회원 수 구하기(프로그래머스_Lv.4) 본문
반응형
<문제>
<예시>
<나의 문제 풀이>
USER_INFO 와 ONLINE_SALE을 INNER JOIN으로 묶어주고 성별 값이 누락인 값은 제외시켜준다.
년도,월,성별 별로 상품을 구매한 회원수를 구해야하기 때문에 년도와 월의 컬럼을 만들어준다.
이 후 WITH를 활용하여 UserSales 테이블을 만들어준다.
UserSales 에서 GROUP BY를 이용하여 년도,월,성별에 따라 집계해주고
SELECT절에서 user_id를 세어주는데 회원수이기 때문에 한명의 회원이 10번 구매한 것은 1번으로 봐야한다.
따라서 DISTINCT로 중복을 제거해준다.
WITH UserSales AS (
SELECT u.USER_ID AS user_id,
u.GENDER,
o.SALES_DATE,
YEAR(o.SALES_DATE) AS year,
MONTH(o.SALES_DATE) AS month
FROM USER_INFO u
INNER JOIN ONLINE_SALE o ON u.USER_ID = o.USER_ID
WHERE u.GENDER IS NOT NULL
)
SELECT year
, month
, gender
, COUNT(DISTINCT user_id)
FROM UserSales
GROUP BY year,month,gender
반응형
'데이터 분석 > Coding Test' 카테고리의 다른 글
[MySQL] 헤비 유저가 소유한 장소(프로그래머스) (0) | 2023.11.03 |
---|---|
[MySQL] 서울에 위치한 식당 목록 출력하기(프로그래머스) (0) | 2023.11.03 |
[SQL] 취소되지 않은 진료 예약 조회하기(프로그래머스) (0) | 2023.10.22 |
[SQL] 자동차 대여 기록에서 대여중 / 대여 가능 여부 구분하기(프로그래머스) (0) | 2023.10.22 |
[SQL] 조건에 맞는 사용자 정보 조회하기(프로그래머스) (0) | 2023.10.22 |