반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- MySQL
- 해결
- SSAFY
- 146355
- 티스토리챌린지
- softeer
- 핵심
- 후기
- 132202
- 싸피
- 조건에 부합하는 중고거래 상태 구하기
- 오블완
- 진료과별 총 예약 횟수 출력하기
- 12930
- 수료
- 10기
- 165672
- SQL
- PCCP
- 소프티어
- 14942
- java
- 백준
- 정기 코딩 인증평가
- 59412
- 설명
- 프로그래머스
- 142085
- 59409
- 퍼즐 조각 채우기
Archives
- Today
- Total
개발 쥬스
[프로그래머스/sql] 131534 상품을 구매한 회원 비율 구하기 본문
반응형
🔗 문제 링크: https://school.programmers.co.kr/learn/courses/30/lessons/131534
🔍 해결 과정
위 문제에서 주어진 조건들을 정리하면 다음과 같습니다.
1️⃣ 다뤄야할 데이터 내용은 2021에 가입한 전체 회원들이다.
2️⃣ 구매한 회원의 비율: (2021년에 가입한 회원 중 상품을 구매한 회원수) / (2021년 가입한 전체 회원수)
3️⃣ 년, 월별로 그룹화하기
4️⃣ 회원의 비율은 소수점 둘째자리에서 반올림하기
5️⃣ 년을 기준으로, 월을 기준으로 오름차순 정렬하기
6️⃣ 같은 year, month에 동일한 회원이 구매할 수도 있으므로 중복을 방지해야한다.
결론적으로 ONLINE_SALE 테이블과 USER_INFO 테이블을 INNER JOIN 처치를 해준 다음 주어진 조건들에 맞게 단계적으로 쿼리를 작성해주면 됩니다.
✏️ 코드
SELECT
YEAR(OS.SALES_DATE) AS YEAR,
MONTH(OS.SALES_DATE) AS MONTH,
COUNT(DISTINCT OS.USER_ID) AS PURCHASED_USERS,
ROUND(COUNT(DISTINCT OS.USER_ID) /
(SELECT COUNT(*) FROM USER_INFO WHERE YEAR(JOINED) = 2021), 1)
AS PUCHASED_RATIO
FROM ONLINE_SALE OS
JOIN USER_INFO UI ON OS.USER_ID = UI.USER_ID
WHERE YEAR(UI.JOINED) = 2021
GROUP BY YEAR, MONTH
ORDER BY YEAR, MONTH;
반응형
'알고리즘' 카테고리의 다른 글
[프로그래머스/Java] 84021 퍼즐 조각 채우기 (0) | 2024.10.30 |
---|---|
[프로그래머스/Java] 42628 이중우선순위큐 (0) | 2024.10.30 |
[프로그래머스/Java] 87390 n^2배열 자르기 (0) | 2024.10.23 |
[프로그래머스/Java] 142085 디펜스 게임 (0) | 2024.10.23 |
[프로그래머스/Java] 179963 추억 점수 (1) | 2024.10.23 |