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
'프로그래머스' 카테고리의 다른 글
[프로그래머스] MySQL Lv.3 헤비유저가 소유한 장소 / Lv.4 주문량이 많은 아이스크림들 조회하기 (1) | 2024.01.07 |
---|---|
[프로그래머스] Python Lv.1 문자열 나누기 / Lv.2 JadenCase 문자열 만들기 (0) | 2024.01.06 |
[프로그래머스] Python Lv.1 완주하지 못한 선수 (1) | 2024.01.03 |
프로그래머스 Python Lv.0 평행 / 겹치는 선분의 길이 (3) | 2023.12.20 |
프로그래머스 Python Lv.0 옹알이(1) / Lv.1 옹알이 (2) / Lv.1 카드뭉치 (3) | 2023.12.19 |