[Programmers] 상품을 구매한 회원 비율 구하기 (JOIN)

2024. 1. 26. 04:05·코테/SQL
728x90

 

 

프로그래머스

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

programmers.co.kr

 

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

 

-- 코드를 입력하세요
WITH TMP AS(
    SELECT YEAR(JOINED) AS YEAR ,COUNT(DISTINCT USER_ID)
    FROM USER_INFO
    WHERE YEAR(JOINED) = 2021
)

SELECT YEAR(A.SALES_DATE) AS YEAR, MONTH(A.SALES_DATE) AS MONTH, 
	   COUNT(DISTINCT B.USER_ID) AS PUCHASED_USERS , 
	   ROUND(COUNT(DISTINCT B.USER_ID)/ 
                                 (SELECT COUNT(DISTINCT USER_ID)
                                  FROM USER_INFO
                                  WHERE YEAR(JOINED) = 2021), 1) AS PUCHASED_RATIO
FROM ONLINE_SALE A LEFT OUTER JOIN USER_INFO B ON A.USER_ID = B.USER_ID 
WHERE YEAR(B.JOINED) = 2021
GROUP BY YEAR, MONTH;

 

 

다른건 어려운게 없었는데, 2021년에 가입한 회원수를 가져오는 거에서 고민이 많았다.

 

그래서 생각해봤던 거 !

위에 WITH 사용해서 새로운 테이블 만들어서 JOIN해서 쓰기(드디어 해봤다)

 > 테이블 3개를 조인할 필요는 없을 것 같은데, 서브쿼리로 넣어쓰면 안될까?

 > 집계함수 안에서도 서브쿼리 사용이 가능한가?

 > 해보자 !

 > 해결

 

이제 GROUP BY도 어느정도 감이 잡히고 서브쿼리도 조금은 감이 잡히는 것 같다.

아직 완벽하진 않지만 .. ! 더욱 정진해야지.

 

 

728x90

'코테 > SQL' 카테고리의 다른 글

[Programmers] PCSQL 샘플문제 4번 (MYSQL)  (0) 2024.02.02
[Solvesql] 실전반 무료 문제 풀이 (SQLite)  (1) 2024.02.02
[Solvesql] 입문반 무료 문제 풀이 (SQLite)  (0) 2024.01.28
[Programmers] Lv.4 입양시각 구하기 (재귀)  (1) 2024.01.27
[Programmers] IFNULL, 조건에 맞는 값 구하기  (0) 2023.05.02
'코테/SQL' 카테고리의 다른 글
  • [Solvesql] 실전반 무료 문제 풀이 (SQLite)
  • [Solvesql] 입문반 무료 문제 풀이 (SQLite)
  • [Programmers] Lv.4 입양시각 구하기 (재귀)
  • [Programmers] IFNULL, 조건에 맞는 값 구하기
DROPDEW
DROPDEW
💻 Developer | 기록하지 않으면 존재하지 않는다
  • DROPDEW
    제 2장 1막
    DROPDEW
  • 전체
    오늘
    어제
    • Dev (417)
      • App·Android (1)
      • BE (44)
        • HTTP 웹 기본 지식 (8)
        • 스프링 입문 - 코드로 배우는 스프링 부트, 웹 .. (12)
        • 스프링부트와 JPA 활용 (11)
        • 스프링부트 시큐리티 & JWT (0)
        • PHP (6)
      • FE·Client (23)
        • HTML (1)
        • React (19)
        • Unity (1)
      • Data (17)
        • AI (7)
        • Bigdata (6)
        • Database (1)
        • 빅데이터분석기사 (2)
      • Infra (0)
      • Activity (0)
        • Education (0)
        • Intern (0)
        • 리모트 인턴십 6기 (0)
        • 구름톤 유니브 4기 (0)
        • SW교육기부단 15기 (0)
      • CS (8)
      • 취준 (13)
        • 자격증 (4)
        • 인적성·NCS (6)
        • 코테·필기·면접 후기 (3)
      • 코테 (270)
        • Algorithm (222)
        • SQL (35)
        • 정리 (13)
      • 인사이트 (27)
        • 회고 (0)
        • 금융경제뉴스 (7)
        • 금융용어·지식 (2)
        • 북마크 (7)
  • 블로그 메뉴

    • 홈
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    자료구조
    다이나믹프로그래밍
    백준
    정렬
    시뮬레이션
    그래프탐색
    최단경로
    이분탐색
    그리디알고리즘
    브루트포스 알고리즘
    그래프이론
    오블완
    매개변수탐색
    구현
    수학
    문자열
    너비우선탐색
    티스토리챌린지
    누적합
    투포인터
  • 최근 댓글

  • 최근 글

  • 250x250
  • hELLO· Designed By정상우.v4.10.3
DROPDEW
[Programmers] 상품을 구매한 회원 비율 구하기 (JOIN)
상단으로

티스토리툴바