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

Ga0·2023년 5월 25일
0

programmers

목록 보기
5/14

년, 월, 성별 별 상품 구매 회원 수 구하기(GROUP BY - LEVEL4)

예시

예를 들어 USER_INFO 테이블이 다음과 같고

ONLINE_SALE 테이블이 다음과 같다면

2022년 1월에 상품을 구매한 회원은 USER_ID 가 1(GENDER=1), 4(GENDER=0)인 회원들이고,
2022년 2월에 상품을 구매한 회원은 USER_ID 가 2(GENDER=NULL), 5(GENDER=1), 6(GENDER=1)인 회원들 이므로,

년, 월, 성별 별로 상품을 구매한 회원수를 집계하고, 년, 월, 성별을 기준으로 오름차순 정렬하면 다음과 같은 실행 결과 가 나와야 한다.

SQL문 - MySQL

SELECT YEAR(SALES_DATE) as YEAR, -- SALES_DATE에 연도만
       MONTH(SALES_DATE) as MONTH, -- SALES_DATE에 월만
       USER_INFO.GENDER, -- USER_INFO의 성별
        -- 조인을 했을 때 중복되는 행은 제외하고 count(행의 개수를 센다)
       count(distinct ONLINE_SALE.USER_ID) as USERS
        from ONLINE_SALE 
            inner join USER_INFO 
                -- 두 테이블의 USER_ID로 합친다.
                on ONLINE_SALE.USER_ID = USER_INFO.USER_ID
    where USER_INFO.GENDER is not NULL -- 성별이 NULL이 아닌 경우만 가져온다.
    group by YEAR, MONTH, USER_INFO.GENDER
    order by YEAR, MONTH,USER_INFO.GENDER

INNER JOIN(내부 조인)

SELECT 필드1, 필드2... or *
FROM A_TABLE A
    INNER JOIN B_TABLE B
    ON 조인 조건(ex. A.PK = B.PK)

-- INNER JOIN을 JOIN이라고만 써도 INNER JOIN으로 인식한다.

0개의 댓글