[MySQL] 프로그래머스 문제 연습 7

Lake·2024년 4월 26일
0

SQL 문제

목록 보기
10/36
post-thumbnail

오랜 기간 보호한 동물(1) (JOIN)

  • 아직 입양을 못 간 동물 중, 가장 오래 보호소에 있었던 동물 3마리의 이름과 보호 시작일을 조회하는 SQL문을 작성해주세요. 이때 결과는 보호 시작일 순으로 조회해야 합니다.

제출한 코드 :

SELECT I.NAME
       , I.DATETIME
FROM ANIMAL_INS AS I
LEFT JOIN ANIMAL_OUTS AS O
ON I.ANIMAL_ID = O.ANIMAL_ID
WHERE O.ANIMAL_ID IS NULL
ORDER BY I.DATETIME
LIMIT 3;

조인 사용

SELECT ANIMAL_INS.NAME
	   , ANIMAL_INS.DATETIME 
FROM ANIMAL_INS 
WHERE ANIMAL_INS.ANIMAL_ID 
NOT IN (SELECT ANIMAL_ID 
	    FROM ANIMAL_OUTS) 
ORDER BY ANIMAL_INS.DATETIME
LIMIT 3;

서브쿼리 사용


카테고리 별 도서 판매량 집계하기 (GROUP BY)

  • 2022년 1월의 카테고리 별 도서 판매량을 합산하고, 카테고리(CATEGORY), 총 판매량(TOTAL_SALES) 리스트를 출력하는 SQL문을 작성해주세요.
    결과는 카테고리명을 기준으로 오름차순 정렬해주세요.

제출한 코드 :

SELECT CATEGORY
       , SUM(SALES) AS "TOTAL_SALES"
FROM BOOK AS B
LEFT JOIN BOOK_SALES AS S
ON B.BOOK_ID = S.BOOK_ID
WHERE S.SALES_DATE LIKE "%2022-01%"
GROUP BY CATEGORY
ORDER BY CATEGORY;

상품 별 오프라인 매출 구하기 (JOIN)

  • PRODUCT 테이블과 OFFLINE_SALE 테이블에서 상품코드 별 매출액(판매가 * 판매량) 합계를 출력하는 SQL문을 작성해주세요. 결과는 매출액을 기준으로 내림차순 정렬해주시고 매출액이 같다면 상품코드를 기준으로 오름차순 정렬해주세요.

제출한 코드 :

SELECT PRODUCT_CODE
       , SUM(PRICE * SALES_AMOUNT) AS "SALES"
FROM PRODUCT AS P
LEFT JOIN OFFLINE_SALE AS S
ON P.PRODUCT_ID = S.PRODUCT_ID
GROUP BY PRODUCT_CODE
ORDER BY SALES DESC, PRODUCT_CODE ASC;

있었는데요 없었습니다 (JOIN)

-관리자의 실수로 일부 동물의 입양일이 잘못 입력되었습니다. 보호 시작일보다 입양일이 더 빠른 동물의 아이디와 이름을 조회하는 SQL문을 작성해주세요. 이때 결과는 보호 시작일이 빠른 순으로 조회해야합니다.

제출한 코드 :

SELECT I.ANIMAL_ID
       , I.NAME
FROM ANIMAL_INS AS I
LEFT JOIN ANIMAL_OUTS AS O
ON I.ANIMAL_ID = O.ANIMAL_ID
WHERE I.DATETIME > O.DATETIME
ORDER BY I.DATETIME; 

오랜 기간 보호한 동물(2) (STRINT, DATE)

  • 입양을 간 동물 중, 보호 기간이 가장 길었던 동물 두 마리의 아이디와 이름을 조회하는 SQL문을 작성해주세요. 이때 결과는 보호 기간이 긴 순으로 조회해야 합니다.

제출한 코드 :

SELECT I.ANIMAL_ID
       , I.NAME
FROM ANIMAL_INS AS I
LEFT JOIN ANIMAL_OUTS AS O
ON I.ANIMAL_ID = O.ANIMAL_ID
ORDER BY O.DATETIME - I.DATETIME DESC
LIMIT 2;

오늘의 TMI

금요일인데 마음이 불편하다............

0개의 댓글