LEVEL 3 시작..
LEVEL 2 의 마지막 부분보다 훨씬 쉬운 부분
LEVEL 2은 서브쿼리와 비트 연산자로 오답 내기가 쉬워서 '서브 쿼리'방식에 대해 다시 한번
공부해봐야할 듯!
🚩오늘의 문제는?
SQL - level 3
1.카테고리 별 도서 판매량 집계하기
2.조건별로 분류하여 주문상태 출력하기
3.오랜 기간 보호한 동물(1)
4.있었는데요 없었습니다
5.오랜 기간 보호한 동물(2)
6.대여 기록이 존재하는 자동차 리스트 구하기

SELECT NEW_T.CATEGORY, NEW_T.TOTAL_SALES
FROM (SELECT YEAR(B.SALES_DATE) AS YEAR,MONTH(B.SALES_DATE) AS MONTH, SUM(B.SALES) AS TOTAL_SALES, A.CATEGORY
FROM BOOK A JOIN BOOK_SALES B
WHERE A.BOOK_ID = B.BOOK_ID
GROUP BY A.CATEGORY
HAVING YEAR=2022 AND MONTH=1) AS NEW_T
ORDER BY NEW_T.CATEGORY;
SELECT A.CATEGORY , SUM(B.SALES) AS TOTAL_SALES
FROM BOOK A JOIN BOOK_SALES B
ON A.BOOK_ID = B.BOOK_ID
WHERE B.SALES_DATE LIKE ('%2022-01%')
GROUP BY A.CATEGORY
ORDER BY 1;
참고자료
https://easyitwanner.tistory.com/274 https://www.codeit.kr/community/questions/UXVlc3Rpb246NjI2NGQzNGY1ZTUyODQyZTQ4YTdmZjhi)

SELECT ORDER_ID ,PRODUCT_ID ,DATE_FORMAT(OUT_DATE,'%Y-%m-%d') AS OUT_DATE,
CASE WHEN OUT_DATE IS NULL THEN '출고미정'
WHEN OUT_DATE <= '2022-05-01' THEN '출고완료'
ELSE '출고대기' END AS 출고여부
FROM FOOD_ORDER
ORDER BY ORDER_ID ASC;

SELECT A.NAME , A.DATETIME
FROM ANIMAL_INS A LEFT JOIN ANIMAL_OUTS B
ON A.ANIMAL_ID = B.ANIMAL_ID
WHERE B.ANIMAL_ID IS NULL
ORDER BY A.DATETIME ASC LIMIT 3;
아직 입양을 못간 아이들이므로, 입양 보낸 정보가 담겨있지 않은 B.ANIMAL_ID가 NULL값인 경우
해당 컬럼을 추출하는 문제이다.

SELECT A.ANIMAL_ID ,A.NAME
FROM ANIMAL_INS A LEFT JOIN ANIMAL_OUTS B
ON A.ANIMAL_ID = B.ANIMAL_ID
WHERE A.DATETIME > B.DATETIME
GROUP BY ANIMAL_ID
ORDER BY A.DATETIME ASC;

SELECT A.ANIMAL_ID , A.NAME
FROM ANIMAL_INS A LEFT JOIN ANIMAL_OUTS B
ON A.ANIMAL_ID = B.ANIMAL_ID
WHERE B.ANIMAL_ID IS NOT NULL
ORDER BY (B.DATETIME-A.DATETIME)DESC LIMIT 2;

SELECT DISTINCT(B.CAR_ID)
FROM CAR_RENTAL_COMPANY_CAR A JOIN CAR_RENTAL_COMPANY_RENTAL_HISTORY B
ON A.CAR_ID = B.CAR_ID
WHERE A.CAR_TYPE='세단' AND B.START_DATE LIKE '%2022-10%'
ORDER BY CAR_ID DESC;