프로그래머스

[프로그래머스] 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