SQL/프로그래머스
SQL 프로그래머스 5일차_2 GROUP BY , DISTINCT , NOT 컬럼 IS NULL
as_형준
2023. 1. 3. 00:19
- 년, 월, 성별 별 상품 구매 회원 수 구하기
문제
USER_INFO 테이블과 ONLINE_SALE 테이블에서 년, 월, 성별 별로 상품을 구매한 회원수를 집계하는 SQL문을 작성해주세요. 결과는 년, 월, 성별을 기준으로 오름차순 정렬해주세요. 이때, 성별 정보가 없는 경우 결과에서 제외해주세요.
유저 테이블
판매목록 테이블
정답코드
유의점
조인시 유저아이디는 테이블당 하나이므로
바로 아이디 수를 세면 2배가 된다.
그래서 DISTINCT를 해줘야 한다,
-- DISTINCT 유저 테이블과 세일즈 테이블에서 유저ID는 두개이므로 회원수를 알기 위해서는 중복값을 뺴야한다,
SELECT YEAR(SALES_DATE) AS YEAR, MONTH(SALES_DATE) AS MONTH ,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),GENDER
HAVING NOT GENDER IS NULL -- 널값 제외하고 조회하기
ORDER BY YEAR(SALES_DATE), MONTH(SALES_DATE),GENDER