본문 바로가기
「SQL초급떼기

코딩테스트 연습GROUP BY년, 월, 성별 별 상품 구매 회원 수 구하기

by DayGo 2023. 4. 2.

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

 

댓글