습득한 점:
이전에는 테이블을 보이는데로 조인했다면,
지금은 테이블이 조인되었을 때의 형태를 머릿속으로 고려하면서 쿼리를 구성할 수 있게되었다.
문제:
USER_INFO 테이블과 ONLINE_SALE 테이블에서 년, 월, 성별 별로 상품을 구매한 회원수를 집계하는 쿼리문 작성
결과는 년, 월, 성별을 기준으로 오름차순 정렬.
이때, 성별 정보가 없는 경우 결과에서 제외.
문제파악:
크게 어려워 보이는 부분은 없었다.
다만 "동일한 날짜, 회원 ID, 상품 ID 조합에 대해서는 하나에 판매 데이터만 존재한다" 이 언급만 조금 더 고려하면 되었다.
ONLINE_SALE만을 볼때, 날짜, 회원ID, 상품ID 조합에 대해서는 고유의 판매데이터만 존재한다고 했지만,
ONLINE_SALE 테이블과 USER_INFO 테이블이 합쳐졌을 때의 상황에서는 중복데이터가 생겨날 수 있음
(USER_ID 마다 성별은 다르게 설정될테니 제외, 나머지 AGE(나이)나 JOINED(가입일)로 인해 중복데이터가 발생될 수는 있을 것 같다)
해서, USER_ID를 카운트 할때는 DISTINCT가 필요하다.
풀이:
SELECT YEAR(sales_date) AS YEAR
, MONTH(sales_date) AS MONTH
, gender AS GENDER
, COUNT(DISTINCT OS.USER_ID) AS USERS
FROM ONLINE_SALE AS OS
INNER JOIN USER_INFO AS UI ON OS.USER_ID = UI.USER_ID
WHERE GENDER IS NOT NULL
GROUP BY 1,2,3
ORDER BY 1 ASC ,2 ASC ,3 ASC
'sql > easy' 카테고리의 다른 글
프로그래머스 Lv 4 - 5월 식품들의 총매출 조회하기 (0) | 2023.07.18 |
---|---|
프로그래머스 Lv 4 - 서울에 위치한 식당 목록 출력하기 (0) | 2023.07.14 |
프로그래머스 Lv 4 - 주문량이 많은 아이스크림들 조회하기 (0) | 2023.07.10 |
프로그래머스 Lv 4 - 우유와 요거트가 담긴 장바구니 - Summer/Winter Coding(2019) (0) | 2023.07.09 |
프로그래머스 Lv 4 - 저자 별 카테고리 별 매출액 집계하기 (0) | 2023.07.09 |