1. 자동차 대여 기록에서 대여중 / 대여 가능 여부 구분하기
![](https://velog.velcdn.com/images/yeojining5/post/6672db77-ab5e-44ca-9c72-de607c26c23d/image.png)
![](https://velog.velcdn.com/images/yeojining5/post/74de8a60-e77a-47ea-a2c5-cce3586b7fcf/image.png)
SELECT CAR_ID
, DECODE(SUM(CASE WHEN TO_DATE('20221016', 'YYYYMMDD') BETWEEN START_DATE AND END_DATE
THEN 1 ELSE 0 END), 1, '대여중', 0, '대여 가능') AS AVAILABILITY
FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY
GROUP BY CAR_ID
ORDER BY CAR_ID DESC
SELECT CAR_ID
, MAX(CASE WHEN TO_DATE('20221016', 'YYYYMMDD') BETWEEN START_DATE AND END_DATE THEN '대여중'
ELSE '대여 가능' END) AS AVAILABILITY
FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY
GROUP BY CAR_ID
ORDER BY CAR_ID DESC
2. 대여 횟수가 많은 자동차들의 월별 대여 횟수 구하기
![](https://velog.velcdn.com/images/yeojining5/post/8346a3ea-2445-4974-9af4-4404a701d26d/image.png)
![](https://velog.velcdn.com/images/yeojining5/post/93c8fc71-a22c-45c9-a9e0-4336bfb71073/image.png)
SELECT EXTRACT(MONTH FROM START_DATE) AS MONTH
, CAR_ID
, COUNT(CAR_ID) AS RECORDS
FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY
WHERE CAR_ID IN (
SELECT CAR_ID
FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY
WHERE START_DATE BETWEEN TO_DATE('20220801', 'YYYYMMDD') AND TO_DATE('20221031', 'YYYYMMDD')
HAVING COUNT(CAR_ID) >= 5
GROUP BY CAR_ID
)
AND START_DATE BETWEEN TO_DATE('20220801', 'YYYYMMDD') AND TO_DATE('20221031', 'YYYYMMDD')
HAVING COUNT(CAR_ID) > 0
GROUP BY EXTRACT(MONTH FROM START_DATE), CAR_ID
ORDER BY MONTH, CAR_ID DESC
3. 식품분류별 가장 비싼 식품의 정보 조회하기
![](https://velog.velcdn.com/images/yeojining5/post/e26ced6e-2169-4170-aaee-9c0f47acc260/image.png)
![](https://velog.velcdn.com/images/yeojining5/post/1ebf9f28-5456-46fc-a7aa-a5bfd2c4bcee/image.png)
SELECT B.CATEGORY
, B.MAX_PRICE
, A.PRODUCT_NAME
FROM FOOD_PRODUCT A
JOIN (
SELECT CATEGORY
, MAX(PRICE) AS MAX_PRICE
FROM FOOD_PRODUCT
WHERE CATEGORY IN('과자', '국', '김치', '식용유')
GROUP BY CATEGORY
) B
ON A.CATEGORY = B.CATEGORY
AND A.PRICE = B.MAX_PRICE
ORDER BY MAX_PRICE DESC
4. 입양 시각 구하기(1)
![](https://velog.velcdn.com/images/yeojining5/post/ee96fa5b-689a-4839-8bec-d7ab72b57adc/image.png)
![](https://velog.velcdn.com/images/yeojining5/post/e21837dd-74ca-4908-840e-9bf41cd95ce7/image.png)
SELECT TO_CHAR(DATETIME, 'HH24') AS HOUR
, COUNT(ANIMAL_ID) AS COUNT
FROM ANIMAL_OUTS
WHERE TO_CHAR(DATETIME, 'HH24') BETWEEN 9 AND 19
GROUP BY TO_CHAR(DATETIME, 'HH24')
ORDER BY HOUR
SELECT HOUR
, COUNT(HOUR) AS COUNT
FROM (
SELECT EXTRACT(HOUR FROM CAST(DATETIME AS TIMESTAMP)) AS HOUR
FROM ANIMAL_OUTS
)
GROUP BY HOUR
HAVING HOUR BETWEEN 9 AND 19
ORDER BY HOUR
5. 가격대 별 상품 개수 구하기
![](https://velog.velcdn.com/images/yeojining5/post/29705749-aa66-48e5-b927-bdb208c01dc5/image.png)
![](https://velog.velcdn.com/images/yeojining5/post/7723c7d8-be8b-4eea-bc91-3b6e1842a7be/image.png)
![](https://velog.velcdn.com/images/yeojining5/post/eb8f3a13-2614-4e7a-a5f9-2ef116f99898/image.png)
SELECT A.PRICE_GROUP
, COUNT(B.PRODUCT_ID) AS PRODUCTS
FROM (
SELECT DECODE(0 + (ROWNUM -1), 0, 0, 0 + (ROWNUM -1) || '0000') AS PRICE_GROUP
FROM DUAL
CONNECT BY LEVEL <= (
SELECT SUBSTR(MAX(PRICE), 0, 1) +1
FROM PRODUCT
)
) A
LEFT OUTER JOIN
(
SELECT TRUNC(PRICE, -4) AS PRICE
, PRODUCT_ID
FROM PRODUCT
) B
ON A.PRICE_GROUP = B.PRICE
GROUP BY PRICE_GROUP
ORDER BY PRICE_GROUP
SELECT TRUNC(PRICE, -4) AS PRICE_GROUP
, COUNT(PRODUCT_ID) AS PRODUCTS
FROM PRODUCT
GROUP BY TRUNC(PRICE, -4)
ORDER BY PRICE_GROUP ASC
![](https://velog.velcdn.com/images/yeojining5/post/671b989d-ddbf-43e7-be67-404f6a0ae614/image.png)
6. 우유와 요거트가 담긴 장바구니
![](https://velog.velcdn.com/images/yeojining5/post/7061d722-79c5-4b0c-a901-52c6e1ac9a5a/image.png)
SELECT DISTINCT A.CART_ID
FROM (
SELECT CART_ID
FROM CART_PRODUCTS
WHERE NAME IN ('Milk')
) A
JOIN (
SELECT CART_ID
FROM CART_PRODUCTS
WHERE NAME IN ('Yogurt')
) B
ON A.CART_ID = B.CART_ID
ORDER BY CART_ID
SELECT CART_ID
FROM (
SELECT DISTINCT CART_ID, NAME
FROM CART_PRODUCTS
WHERE NAME IN ('Milk','Yogurt')
)
GROUP BY CART_ID
HAVING COUNT(*) >= 2
ORDER BY CART_ID