반응형
Notice
Recent Posts
Recent Comments
Link
«   2025/12   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
Archives
Today
Total
관리 메뉴

욱꾸미의 주꾸미 발

[코딩테스트] 프로그래머스 - 년, 월, 성별 별 상품 구매 회원 수 구하기(MySQL, Level4) 본문

코딩테스트/프로그래머스

[코딩테스트] 프로그래머스 - 년, 월, 성별 별 상품 구매 회원 수 구하기(MySQL, Level4)

욱꾸미 2022. 12. 14. 00:01
반응형

안녕하세요~

눈이 참 많이 오는 날이네요~

아쉽게도 Java쪽 코딩테스트를 올리지 못하고 오늘은 쿼리관련 문제만 올립니다.

 

풀지못했기때문이죠~ 어렵네요~ 이제는 들여다봐도 힌트없이 풀지를 못하니...

이게 제 실력인지 뭔지 헷갈릴뿐이네요 ㅠㅠ

 

더 열심히 살아보겠습니다 빠샤!💪

그럼 문제 만나보시죠~

https://school.programmers.co.kr/learn/courses/30/lessons/131532

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

쉬운듯 쉽지않은 문제였습니다. distinct에 대해 사용법이 어색해 많이 헤맸습니다.

제가 작성한 쿼리문입니다.

-- 코드를 입력하세요
SELECT year(sales_date) as year, month(sales_date) as month,ui.gender, count(distinct os.user_id)
from user_info ui
join online_sale os
on ui.user_id=os.user_id
where ui.gender is not null
group by year(sales_date), month(sales_date),ui.gender
order by year(sales_date), month(sales_date),ui.gender

짧다~?라고 생각하실 수도 있지만 저에게는 오히려 시간은 제일 오래걸린거 같네요.

여기서 포인트는

① 년, 월, 성별 별로 ~ 라는 구문을 읽고 group by를 생각해 냈다

② 한 명의 사용자가 같은 년, 월에 여러번 샀더라도 count는 1로만 돼야하기에 distinct를 사용해야 된다.

 

이렇게 2개의 포인트를 잡아내셨다면 성공이지 싶습니다.

또한 'yyyy-mm-dd'의 구조를 select하기위해

① year(sales_date)

② month(sales_date)

이렇게 sales_date에서 추출해서 썼습니다.

저번에 비슷한 파싱을하면서 배웠습니다 헤헤

 

이번기회를 통해 저같은 경우에는 distinct를 사용해볼 수 있었습니다.

제가 알아낸 distinct의 특징으로는

1) 맨앞에서 사용

 

일단 이정도 입니다. 그리고 사용하기 매우 까다롭더군요.

 

조건에 따라 gender가 null인 부분 제거하고 distinct를 통해 뽑아낸 각각의 user_id를 

count해주면 해결 하실 수 있습니다.

 

감사합니다. :D

반응형