[프로그래머스 Lv5.] 131534번 상품을 구매한 회원 비율 구하기 (ORACLE)

2024. 2. 8. 08:37·Coding Test/SQL 고득점 Kit[ORACLE]
목차
  1. 문제 설명
  2. 문제
  3. 예시

문제 설명

다음은 어느 의류 쇼핑몰에 가입한 회원 정보를 담은 USER_INFO 테이블과 온라인 상품 판매 정보를 담은 ONLINE_SALE 테이블 입니다. USER_INFO 테이블은 아래와 같은 구조로 되어있으며 USER_ID, GENDER, AGE, JOINED는 각각 회원 ID, 성별, 나이, 가입일을 나타냅니다.

Column name  Type Nullable
USER_ID INTEGER FALSE
GENDER TINYINT(1) TRUE
AGE INTEGER TRUE
JOINED DATE FALSE

 

GENDER 컬럼은 비어있거나 0 또는 1의 값을 가지며 0인 경우 남자를, 1인 경우는 여자를 나타냅니다.

ONLINE_SALE 테이블은 아래와 같은 구조로 되어있으며 ONLINE_SALE_ID, USER_ID, PRODUCT_ID, SALES_AMOUNT, SALES_DATE는 각각 온라인 상품 판매 ID, 회원 ID, 상품 ID, 판매량, 판매일을 나타냅니다.

Column name  Type Nullable
ONLINE_SALE_ID INTEGER FALSE
USER_ID INTEGER FALSE
PRODUCT_ID INTEGER FALSE
SALES_AMOUNT INTEGER FALSE
SALES_DATE DATE FALSE

 

동일한 날짜, 회원 ID, 상품 ID 조합에 대해서는 하나의 판매 데이터만 존재합니다.


문제

USER_INFO 테이블과 ONLINE_SALE 테이블에서 2021년에 가입한 전체 회원들 중 상품을 구매한 회원수와 상품을 구매한 회원의 비율(=2021년에 가입한 회원 중 상품을 구매한 회원수 / 2021년에 가입한 전체 회원 수)을 년, 월 별로 출력하는 SQL문을 작성해주세요. 상품을 구매한 회원의 비율은 소수점 두번째자리에서 반올림하고, 전체 결과는 년을 기준으로 오름차순 정렬해주시고 년이 같다면 월을 기준으로 오름차순 정렬해주세요.


예시

예를 들어 USER_INFO 테이블이 다음과 같고

USER_ID  GENDER AGE  JOINED
1 1 26 2021-06-01
2 NULL NULL 2021-06-25
3 0 NULL 2021-06-30
4 0 31 2021-07-03
5 1 25 2022-01-09
6 1 33 2022-02-14

 

ONLINE_SALE 이 다음과 같다면

ONLINE_SALE_ID  USER_ID  PRODUCT_ID  SALES_AMOUNT SALES_DATE
1 1 54 1 2022-01-01
2 1 3 2 2022-01-25
3 4 34 1 2022-01-30
4 6 253 3 2022-02-03
5 2 31 2 2022-02-09
6 5 35 1 2022-02-14
7 5 57 1 2022-02-18

 

2021년에 가입한 회원은 USER_ID가 1, 2, 3, 4 인 회원들로 총 4명 입니다. ONLINE_SALE 테이블에서 해당 회원들에 대한 판매 데이터는 다음과 같습니다.

ONLINE_SALE_ID  USER_ID  PRODUCT_ID  SALES_AMOUNT SALES_DATE
1 1 54 1 2022-01-01
2 1 3 2 2022-01-25
3 4 34 1 2022-01-30
5 2 31 2 2022-02-09

 

그러므로 년, 월 별로 상품을 구매한 회원수와 상품을 구매한 회원의 비율을 구하고 결과를 정렬하면 다음과 같아야 합니다.

YEAR  MONTH  PUCHASED_USERS PUCHASED_RATIO
2022 1 2 0.5
2022 2 1 0.3

-- 코드를 입력하세요
SELECT
TO_CHAR(S.SALES_DATE, 'YYYY') AS YEAR
, TO_NUMBER(TO_CHAR(S.SALES_DATE, 'MM')) AS MONTH
, COUNT(DISTINCT U.USER_ID) AS PUCHASED_USERS
, ROUND(COUNT(DISTINCT U.USER_ID) / (SELECT COUNT(USER_ID)
FROM USER_INFO
WHERE TO_CHAR(JOINED, 'YYYY') = '2021'), 1) AS PUCHASED_RATIO
FROM USER_INFO U
RIGHT JOIN ONLINE_SALE S
ON U.USER_ID = S.USER_ID AND TO_CHAR(U.JOINED, 'YYYY') = '2021'
GROUP BY TO_CHAR(S.SALES_DATE, 'YYYY'), TO_NUMBER(TO_CHAR(S.SALES_DATE, 'MM'))
ORDER BY YEAR, MONTH;
저작자표시 비영리 변경금지 (새창열림)

'Coding Test > SQL 고득점 Kit[ORACLE]' 카테고리의 다른 글

[프로그래머스 Lv2.] 131533번 상품 별 오프라인 매출 구하기 (ORACLE)  (0) 2024.02.08
[프로그래머스 Lv4.] 59045번 보호소에서 중성화한 동물 (ORACLE)  (1) 2024.02.08
[프로그래머스 Lv3.] 59044번 오랜 기간 보호한 동물(1) (ORACLE)  (0) 2024.02.08
[프로그래머스 Lv3.] 59043번 있었는데요 없었습니다 (ORACLE)  (0) 2024.02.08
[프로그래머스 Lv2.] 59042번 없어진 기록 찾기 (ORACLE)  (0) 2024.02.08
  1. 문제 설명
  2. 문제
  3. 예시
'Coding Test/SQL 고득점 Kit[ORACLE]' 카테고리의 다른 글
  • [프로그래머스 Lv2.] 131533번 상품 별 오프라인 매출 구하기 (ORACLE)
  • [프로그래머스 Lv4.] 59045번 보호소에서 중성화한 동물 (ORACLE)
  • [프로그래머스 Lv3.] 59044번 오랜 기간 보호한 동물(1) (ORACLE)
  • [프로그래머스 Lv3.] 59043번 있었는데요 없었습니다 (ORACLE)
woojin._.
woojin._.
여러가지 개발을 해보며 발생하는 이야기들에 대한 블로그입니다:)
  • woojin._.
    Jin's Dev Story
    woojin._.
  • 전체
    오늘
    어제
    • 분류 전체보기 (827)
      • Tools (25)
        • eGovFrame (3)
        • GeoServer (3)
        • QGIS (2)
        • LabelImg (2)
        • Git (6)
        • GitHub (1)
        • Eclipse (7)
        • Visual Studio (1)
      • Web & Android (121)
        • SpringBoot (37)
        • Three.js (2)
        • Spring Data JPA (9)
        • 스프링 부트 쇼핑몰 프로젝트 with JPA (25)
        • Thymeleaf (4)
        • Spring Security (15)
        • Flutter (29)
      • Programming Language (61)
        • JAVA (27)
        • JavaScript (14)
        • Dart (2)
        • Python (15)
        • PHP (3)
      • Database (43)
        • PostgreSQL (32)
        • MYSQL (7)
        • Oracle (3)
        • MSSQL (1)
      • SERVER (17)
        • TCP_IP (3)
        • 리눅스 (7)
        • AWS (7)
      • Coding Test (443)
        • 백준[JAVA] (106)
        • 프로그래머스[JAVA] (260)
        • 알고리즘 고득점 Kit[JAVA] (3)
        • SQL 고득점 Kit[ORACLE] (74)
      • CS 지식 (49)
        • [자료구조] (14)
        • [네트워크] (12)
        • [데이터베이스] (10)
        • [알고리즘] (9)
        • [운영체제] (4)
      • 기타 (6)
      • 자격증 & 공부 (62)
        • 정보처리기사 (2)
        • SQLD (6)
        • 네트워크관리사 2급 (5)
        • 리눅스마스터 1급 (44)
        • 리눅스마스터 2급 (1)
        • ISTQB (3)
        • 시스템보안 (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 인기 글

  • 태그

    자바
    데이터베이스
    backjoon
    CS지식
    spring
    Oracle
    스프링 부트 쇼핑몰 프로젝트 with JPA
    Java
    스프링
    pcce 기출문제
    데이터
    리눅스
    postgresql
    백준
    플러터
    시큐리티
    리눅스마스터 1급
    Spring Security
    JPA
    Linux
    baekjoon
    CS
    리눅스마스터
    DB
    Flutter
    programmers
    프로그래머스
    스프링부트
    springboot
    python
  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
woojin._.
[프로그래머스 Lv5.] 131534번 상품을 구매한 회원 비율 구하기 (ORACLE)

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.