프로그래머스
[프로그래머스] MySQL Lv.2 고양이와 개는 몇 마리 있을까 / Lv.5 상품을 구매한 회원 비율 구하기
s2h15
2024. 1. 5. 20:05
728x90
1. 고양이와 개는 몇 마리 있을까
문제 설명
동물 보호소에 들어온 동물 중 고양이와 개가 각각 몇 마리인지 조회하는 SQL문을 작성해주세요. 이때 고양이를 개보다 먼저 조회해주세요.
나의 풀이
SELECT ANIMAL_TYPE, COUNT(*) AS count
FROM ANIMAL_INS
GROUP BY ANIMAL_TYPE
ORDER BY ANIMAL_TYPE
2. 상품을 구매한 회원 비율 구하기
문제 설명
USER_INFO테이블과 ONLINE_SALE 테이블에서 2021년에 가입한 전체 회원들 중 상품을 구매한 회원수와 상품을 구매한 회원의 비율(=2021년에 가입한 회원 중 상품을 구매한 회원수 / 2021년에 가입한 전체 회원 수)을 년, 월 별로 출력하는 SQL문을 작성해주세요. 상품을 구매한 회원의 비율은 소수점 두번째자리에서 반올림하고, 전체 결과는 년을 기준으로 오름차순 정렬해주시고 년이 같다면 월을 기준으로 오름차순 정렬해주세요.
나의 풀이
SELECT LEFT(SALES_DATE,4) AS YEAR ,SUBSTRING(SALES_DATE,6,2) AS MONTH ,
COUNT(DISTINCT USER_INFO.USER_ID) AS PURCHASED_USERS ,
ROUND(COUNT(DISTINCT USER_INFO.USER_ID) / (SELECT COUNT(DISTINCT USER_ID)
FROM USER_INFO
WHERE LEFT(JOINED,4) = 2021) ,1)AS PURCHASED_RATIO
FROM ONLINE_SALE LEFT JOIN USER_INFO
ON(USER_INFO.USER_ID = ONLINE_SALE.USER_ID AND LEFT(USER_INFO.JOINED,4) = 2021)
GROUP BY YEAR ,MONTH
ORDER BY YEAR , MONTH
처음에는 DISTINCT를 쓰지 않고 코드를 작성하였더니 중복되는 user_id가 같이 count 되어
정확한 답이 나오지 않았다.
중복을 피하기 위해 DISTINCT를 사용하여 작성하였다.
728x90