๋ฌธ์ ์ค๋ช
๋ค์์ ์ด๋ ์๋์ฐจ ๋์ฌ ํ์ฌ์ ์๋์ฐจ ๋์ฌ ๊ธฐ๋ก ์ ๋ณด๋ฅผ ๋ด์ CAR_RENTAL_COMPANY_RENTAL_HISTORY ํ ์ด๋ธ์ ๋๋ค. CAR_RENTAL_COMPANY_RENTAL_HISTORY ํ ์ด๋ธ์ ์๋์ ๊ฐ์ ๊ตฌ์กฐ๋ก ๋์ด์์ผ๋ฉฐ, HISTORY_ID, CAR_ID, START_DATE, END_DATE ๋ ๊ฐ๊ฐ ์๋์ฐจ ๋์ฌ ๊ธฐ๋ก ID, ์๋์ฐจ ID, ๋์ฌ ์์์ผ, ๋์ฌ ์ข ๋ฃ์ผ์ ๋ํ๋ ๋๋ค.
Column nameTypeNullable
HISTORY_ID | INTEGER | FALSE |
CAR_ID | INTEGER | FALSE |
START_DATE | DATE | FALSE |
END_DATE | DATE | FALSE |
๋ฌธ์
CAR_RENTAL_COMPANY_RENTAL_HISTORY ํ ์ด๋ธ์์ 2022๋ 10์ 16์ผ์ ๋์ฌ ์ค์ธ ์๋์ฐจ์ธ ๊ฒฝ์ฐ '๋์ฌ์ค' ์ด๋ผ๊ณ ํ์ํ๊ณ , ๋์ฌ ์ค์ด์ง ์์ ์๋์ฐจ์ธ ๊ฒฝ์ฐ '๋์ฌ ๊ฐ๋ฅ'์ ํ์ํ๋ ์ปฌ๋ผ(์ปฌ๋ผ๋ช : AVAILABILITY)์ ์ถ๊ฐํ์ฌ ์๋์ฐจ ID์ AVAILABILITY ๋ฆฌ์คํธ๋ฅผ ์ถ๋ ฅํ๋ SQL๋ฌธ์ ์์ฑํด์ฃผ์ธ์. ์ด๋ ๋ฐ๋ฉ ๋ ์ง๊ฐ 2022๋ 10์ 16์ผ์ธ ๊ฒฝ์ฐ์๋ '๋์ฌ์ค'์ผ๋ก ํ์ํด์ฃผ์๊ณ ๊ฒฐ๊ณผ๋ ์๋์ฐจ ID๋ฅผ ๊ธฐ์ค์ผ๋ก ๋ด๋ฆผ์ฐจ์ ์ ๋ ฌํด์ฃผ์ธ์.
๋ฌธ์ ํ์ด
SELECT CAR_ID, (CASE WHEN CAR_ID
IN (SELECT CAR_ID
FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY
WHERE '2022-10-16' BETWEEN START_DATE AND END_DATE)
THEN '๋์ฌ์ค'
ELSE '๋์ฌ ๊ฐ๋ฅ'
END)'AVAILABILITY'
FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY
GROUP BY CAR_ID
ORDER BY CAR_ID DESC;
CASE WHEN - THEN - ELSE - END ๊ตฌ๋ฌธ์ ์ฒ์ ์จ๋ณด์๋ค.
์ฐ์ ๋์ฌ ์์์ผ๊ณผ ๋์ฌ ์ข ๋ฃ์ผ ์ฌ์ด์ 2022๋ 10์ 16์ผ์ด ์กด์ฌํ๋ ๊ฒฝ์ฐ์ CAR_ID ์ปฌ๋ผ ๋ฐ์ดํฐ๋ฅผ ์ถ์ถํด์ ์๋ธ์ฟผ๋ฆฌ๋ก ์ฌ์ฉํ๋ค.
๊ทธ๋ฆฌ๊ณ CASE WHEN - THEN - ELSE - END ๊ตฌ๋ฌธ์ ์ด์ฉํด์ ํด๋น ์๋ธ ์ฟผ๋ฆฌ์ ์กด์ฌํ๋ CAR_ID์ธ ๊ฒฝ์ฐ '๋์ฌ์ค'์ผ๋ก ํ์ํ๊ณ , ๊ทธ๋ ์ง ์์ผ๋ฉด '๋์ฌ ๊ฐ๋ฅ'์ผ๋ก ํ์ํ๋ค.
๊ทธ๋ฆฌ๊ณ , GROUP BY๋ฅผ ํด์ฃผ์ง ์์์ ๊ณ์ ์ค๋ต์ฒ๋ฆฌ๊ฐ ๋์๋๋ฐ, GROUP BY๋ฅผ ํด์ฃผ์ง ์์ผ๋ฉด ๋ชจ๋ CAR_ID์ ๋ํด์ ๊ฐ๊ฐ ์ฒ๋ฆฌ๋ฅผ ํ๊ฒ ๋๊ธฐ ๋๋ฌธ์ GROUP BY๋ฅผ ํด์ ์ฌ๋ฌ ๊ฐ์ CAR_ID๋ฐ์ดํฐ๋ฅผ ๊ทธ๋ฃนํํด์ค์ผ ํ๋ค.