https://school.programmers.co.kr/learn/courses/30/lessons/131532
어느 의류 쇼핑몰에 가입한 회원 정보를 담은 USER_INFO 테이블입니다.
Column name | Type | Nullable |
USER_ID | INTEGER | FALSE |
GENDER | TINYINT(1) | TRUE |
AGE | INTEGER | TRUE |
JOINED | DATE | FALSE |
테이블과 온라인 상품 판매 정보를 담은 ONLINE_SALE 테이블 입니다.
Column name | Type | Nullable |
ONLINE_SALE_ID | INTEGER | FALSE |
USER_ID | INTEGER | FALSE |
PRODUCT_ID | INTEGER | FALSE |
SALES_AMOUNT | INTEGER | FALSE |
SALES_DATE | DATE | FALSE |
USER_INFO 테이블과 ONLINE_SALE 테이블에서 년, 월, 성별 별로 상품을 구매한 회원수를 집계하는 SQL문을 작성해주세요. 결과는 년, 월, 성별을 기준으로 오름차순 정렬해주세요. 이때, 성별 정보가 없는 경우 결과에서 제외해주세요.
조회할 정보 : 상품을 구매한 회원수
조건1 : 년, 월, 성별 별
조건2 : 년, 월, 성별을 기준으로 오름차순
조건3 : 성별 정보가 없는 경우 결과에서 제외
--조회할 정보 및 조건1을 위한 join
SELECT year(A.sales_date) as year, month(A.sales_date) as month, B.gender, count(distinct A.user_id) users
from online_sale A join user_info B
on A.user_id = B.user_id
--조건3
where B.gender is not null
group by year,month,gender
--조건2
order by year,month,gender ;
조금은 까다지만 유용한 유형의 문제
select - from - where - group by - order by 문법 순서에 맞게 적용하기 좋은 문제였다.
더불어 count, join까지 활용하는 좋은 문제라는 생각이 든다.
'컴퓨터 공부 > SQL' 카테고리의 다른 글
MySQL Master-Slave 구조 (0) | 2023.08.07 |
---|---|
프로그래머스 코딩테스트 연습 MySQL Lv.4 : 취소되지 않은 진료 예약 조회하기 (0) | 2022.12.08 |
프로그래머스 코딩테스트 연습 MySQL Lv.4 : 우유와 요거트가 담긴 장바구니 (0) | 2022.11.24 |
프로그래머스 코딩테스트 연습 MySQL Lv.4 : 식품분류별 가장 비싼 식품의 정보 조회하기 (0) | 2022.11.21 |
프로그래머스 코딩테스트 연습 MySQL Lv.4 : 5월 식품들의 총매출 조회하기 (0) | 2022.11.19 |