-
프로그래머스 - 년, 월, 성별 별 상품 구매 회원 수 구하기SQL 문제 2024. 1. 5. 15:10
년, 월, 성별 별 상품 구매 회원 수 구하기
USER_INFO 테이블과 ONLINE_SALE 테이블에서 년, 월, 성별 별로 상품을 구매한 회원수를 집계하는 SQL문을 작성해주세요. 결과는 년, 월, 성별을 기준으로 오름차순 정렬해주세요. 이때, 성별 정보가 없는 경우 결과에서 제외해주세요.-- 년, 월, 성별 별로 상품을 구매한 회원수를 집계하는 SQL문을 작성해주세요. -- 결과는 년, 월, 성별을 기준으로 오름차순 정렬해주세요. 이때, 성별 정보가 없는 경우 결과에서 제외해주세요. with sales_info as( SELECT year(sale.sales_date) as Year_date, month(sale.sales_date) as Month_date, info.gender as Gender, count(distinct info.user_id) as USERS FROM user_info info inner join online_sale sale ON info.user_id = sale.user_id GROUP BY 1,2,3 ) SELECT Year_date, Month_date, Gender, USERS FROM sales_info WHERE Gender is not null Order By 1,2,3
이번 특강과 문제를 풀어보면서
서브쿼리를 많이 써서 복잡한 메인 쿼리를 만드는 것 대신에
가상의 view인 with 구문을 사용해서 푸는 방법으로 문제를 풀어보았다.
사실 with 구문에 있는 쿼리를 메인 쿼리에 쓰면 되지만
with 구문을 연습하고자 한번 돌려봤는데 정답이길래 만족한다.
쿼리 진행 순서
1. sales_info 테이블에서 Year_date, Month_date, Gender, Users를 선택한다.
2. WHERE 로 성별이 없는 경우 = null 인경우는 제외하는 조건 추가.
3. Group by로 년,월,성별별로 그룹화를 하고, 이 순으로 order by로 오름차순 정렬
https://school.programmers.co.kr/learn/courses/30/lessons/131532
'SQL 문제' 카테고리의 다른 글
프로그래머스 - 조회수가 가장 많은 중고거래 게시판의 첨부파일 조회하기 (0) 2024.01.08 프로그래머스 - 우유와 요거트가 담긴 장바구니 (1) 2024.01.05 프로그래머스 - 헤비 유저가 소유한 장소 (0) 2024.01.05 프로그래머스 - 자동차 평균 대여 기간 구하기 (0) 2024.01.05 프로그래머스 - 서울에 위치한 식당 목록 출력하기 (1) 2024.01.05