[프로그래머스] 년, 월, 성별 별 상품 구매 회원 수 구하기_MySQL
2023. 3. 20. 14:02ㆍDataBase/SQL Query Problem
728x90
반응형
SMALL
년, 월, 성별 별로 그룹핑을 요하는 문제다. 그러나 위의 세가지 조건으로만 그룹핑하면 안된다.
문제에서는 상품구매횟수가 아닌 상품구매회원수를 구하라고 했기 때문에
같은 년, 월에 한 회원이 여러번 구매해도 상품구매회원수는 1이어야 한다.
따라서 user_id 로도 그룹핑을 해야한다. 이렇게 하면 년, 월, 성별, 회원 아이디의 데이터를 만들 수 있다.
이제 위에서 구한 테이블을 가지고 년, 월, 성별에 대해 한 번 더 그룹핑을 진행하면
같은 년, 월, 성별을 갖는 회원끼리 그룹핑되므로 같은 년, 월, 성별을 갖는 회원의 수를 알 수 있다.
즉, 년, 월, 성별 별 상품 구매 회원 수를 구할 수 있다.
정답
WITH DATA AS (
SELECT
YEAR(SALES_DATE) YEAR, MONTH(SALES_DATE) MONTH, UI.GENDER, UI.USER_ID
FROM
ONLINE_SALE OS INNER JOIN USER_INFO UI
ON
OS.USER_ID = UI.USER_ID
GROUP BY
YEAR(SALES_DATE), MONTH(SALES_DATE), UI.GENDER, UI.USER_ID
HAVING
UI.GENDER IS NOT NULL
ORDER BY
YEAR ASC, MONTH ASC, UI.GENDER ASC
)
SELECT
YEAR, MONTH, GENDER, COUNT(*) USERS
FROM
DATA
GROUP BY
YEAR, MONTH, GENDER728x90
반응형
LIST
'DataBase > SQL Query Problem' 카테고리의 다른 글
| [프로그래머스] 서울에 위치한 식당 목록 출력하기_MySQL (0) | 2023.03.22 |
|---|---|
| [프로그래머스] 그룹별 조건에 맞는 식당 목록 출력하기_MySQL (0) | 2023.03.21 |
| [프로그래머스] 오프라인/온라인 판매 데이터 통합하기_MySQL (0) | 2023.03.19 |
| [프로그래머스] 취소되지 않은 진료 예약 조회하기_MySQL (1) | 2023.03.18 |
| [프로그래머스] 주문량이 많은 아이스크림들 조회하기_MySQL (0) | 2023.03.17 |