코딩테스트 연습GROUP BY년, 월, 성별 별 상품 구매 회원 수 구하기
https://school.programmers.co.kr/learn/courses/30/lessons/131532#qna
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
1. 주의 : count(distinct) 로 회원수를 구해야하는 문제!!
-- 코드를 입력하세요
-- 의류 쇼핑몰에 가입한 회원 정보를 담은 USER_INFO
-- 온라인 상품 판매 정보를 담은 ONLINE_SALE 테이블
-- 동일한 날짜, 회원 ID, 상품 ID 조합에 대해서는 하나의 판매 데이터만 존재합니다. : 중복없다는 뜻
SELECT date_format(sales_date, '%Y') as 년,
date_format(sales_date, '%m') as 월,
gender as 성별,
count(distinct(c2.user_id)) as 회원수
from USER_INFO as c1 inner join ONLINE_SALE as c2 on c1.user_id=c2.user_id
where gender is not null
group by 년,월,성별
order by 년,월,성별
2. 오답
SELECT date_format(sales_date, '%Y') as 년,
date_format(sales_date, '%m') as 월,
gender as 성별,
count(c2.user_id) as 회원수
from USER_INFO as c1 inner join ONLINE_SALE as c2 on c1.user_id=c2.user_id
where gender is not null
group by 년,월,성별
order by 년,월,성별
# 참고
YEAR(o.SALES_DATE) AS YEAR, MONTH(o.SALES_DATE) AS MONTH
DATE_FORMAT(A.SALES_DATE, "%Y") AS YEAR, DATE_FORMAT(A.SALES_DATE, '%m') AS MONTH
SELECT YEAR(o.SALES_DATE) AS YEAR, MONTH(o.SALES_DATE) AS MONTH, u.GENDER, COUNT(distinct o.USER_ID) AS USERS
FROM ONLINE_SALE o
JOIN USER_INFO u ON o.USER_ID=u.USER_ID
WHERE u.GENDER IN (0,1)
GROUP BY YEAR, MONTH, GENDER
ORDER BY YEAR ,MONTH, GENDER