https://school.programmers.co.kr/learn/courses/30/lessons/131534
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
문제를 간략하게 요약하자면, 2021년에 가입한 회원 중 상품을 구매한 회원수, 구매 비율을 년 월로 출력하는 문제이다.
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
SELECT SUBSTR(TO_CHAR(OS.SALES_DATE, 'YYYYMMDD'), 1, 4) YEAR
,TO_NUMBER(SUBSTR(TO_CHAR(OS.SALES_DATE, 'YYYYMMDD'), 5, 2)) MONTH
,COUNT(DISTINCT UI.USER_ID) PERCHASED_USERS
,ROUND(COUNT(DISTINCT UI.USER_ID) /
(
SELECT COUNT(USER_ID)
FROM USER_INFO UI2
WHERE SUBSTR(TO_CHAR(UI2.JOINED, 'YYYYMMDD'), 1, 4) = '2021'
)
, 1) PURCHASED_RATIO
FROM USER_INFO UI
INNER JOIN ONLINE_SALE OS ON OS.USER_ID = UI.USER_ID
WHERE SUBSTR(TO_CHAR(UI.JOINED, 'YYYYMMDD'), 1, 4) = '2021'
GROUP BY SUBSTR(TO_CHAR(OS.SALES_DATE, 'YYYYMMDD'), 1, 4)
,TO_NUMBER(SUBSTR(TO_CHAR(OS.SALES_DATE, 'YYYYMMDD'), 5, 2))
ORDER BY 1 ASC, 2 ASC
|
cs |
2021년도 가입한 총 인원을 스칼라로 구하는 게 좋은 방법은 아닌 것 같다.
(2021 년도로 고정해서 1년만 본다 치면 12번 계산하면 되니까 큰 문제는 아니겠지만 조회하는 월이 많아지면 속도 이슈가 생기지 않을까 싶다. WITH 절로 빼던가 하는 수정이 필요할 것 같다)

당시에 딱 한 명만 풀었던 문제라 나도 빨리 풀고 싶어서 일단 되는대로 풀었다...! ㅋㅋ
지금은 푼 사람이 많지만 그래도 나름 뿌듯했다!
'IT > SQL' 카테고리의 다른 글
| [프로그래머스_SQL] 자동차 대여 기록에서 장기/단기 대여 구분하기 (0) | 2023.02.15 |
|---|---|
| [프로그래머스] SQL 자동차 대여 기록 별 대여 금액 구하기 (0) | 2023.02.08 |
| conflict 난 것도 아닌데 merge request 안 될 때 (Validate branches Another open merge request already exists for this source branch: !39 ) (0) | 2022.11.19 |
| Batch Insert 할 때 PK 오류가 난다면 (insert 안에 select 문) (0) | 2022.11.18 |
| ALIAS 에서는 연산이 안 됩니다 (0) | 2022.11.17 |