_Han_
나의 개발 노트
_Han_
  • 분류 전체보기 (273)
    • 데이터 엔지니어링 (30)
    • 인프라 (3)
    • 추천시스템 (11)
    • 코딩테스트 (146)
    • 부트캠프 회고 (15)
    • 회고 (4)
    • 자격증 (1)
    • 파이썬 프로그래밍 (6)
    • 통계 (2)
    • Git (21)
    • 유니티2D (33)

최근 글

반응형
hELLO · Designed By 정상우.
_Han_

나의 개발 노트

[코딩테스트] 프로그래머스 년, 월, 성별 별 상품 구매 회원 수 구하기 MySQL
코딩테스트

[코딩테스트] 프로그래머스 년, 월, 성별 별 상품 구매 회원 수 구하기 MySQL

2022. 12. 8. 15:16
반응형

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

 

프로그래머스

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

programmers.co.kr

SELECT
    YEAR(SALES_DATE) AS YEAR,
    MONTH(SALES_DATE) AS MONTH,
    U.GENDER AS GENDER,
    COUNT(DISTINCT(U.USER_ID)) AS USERS
FROM USER_INFO U
JOIN ONLINE_SALE O
ON U.USER_ID = O.USER_ID
GROUP BY YEAR(SALES_DATE), MONTH(SALES_DATE), U.GENDER
HAVING GENDER IS NOT NULL
ORDER BY YEAR, MONTH, GENDER

먼저 USER_INFO(U) 테이블과 ONLINE_SALE(O) 테이블을 USER_ID 기준으로 JOIN을 했습니다.

- 년 : YEAR(SALES_DATE)

- 월 : MONTH(SALES_DATE)

- 성별 : U.GENDER

를 기준으로 그룹화를 하였고

'회원 수' 를 집계해야하기 때문에 COUNT()함수를 사용하였습니다.

이때 중복회원은 제거해야하기 때문에 DISTINCT() 사용하였습니다.

성별 정보가 없는 경우 결과에서 제거하기 위해 HAVING 문에서 조건을 주어 처리하였고

마지막으로 ORDER BY문에서 년(YEAR), 월(MONTH), 성별(GENDER)를 기준으로 오름차순 정렬했습니다.

 

반응형

'코딩테스트' 카테고리의 다른 글

[코딩테스트] 프로그래머스 주문량이 많은 아이스크림들 조회하기  (0) 2022.12.09
[코딩테스트] 프로그래머스 취소되지 않은 진료 예약 조회하기 MySQL  (0) 2022.12.08
[코딩테스트] 프로그래머스 서울에 위치한 식당 목록 출력하기 MySQL  (0) 2022.12.07
[코딩테스트] 프로그래머스 우유와 요거트가 담긴 장바구니 MySQL  (0) 2022.12.07
[코딩테스트] 프로그래머스 식품분류별 가장 비싼 식품의 정보 조회하기 MySQL  (1) 2022.12.06
    '코딩테스트' 카테고리의 다른 글
    • [코딩테스트] 프로그래머스 주문량이 많은 아이스크림들 조회하기
    • [코딩테스트] 프로그래머스 취소되지 않은 진료 예약 조회하기 MySQL
    • [코딩테스트] 프로그래머스 서울에 위치한 식당 목록 출력하기 MySQL
    • [코딩테스트] 프로그래머스 우유와 요거트가 담긴 장바구니 MySQL
    _Han_
    _Han_
    학습한 것을 기록합니다.

    티스토리툴바