https://school.programmers.co.kr/learn/courses/30/lessons/157340
๋ฌธ์
CAR_RENTAL_COMPANY_RENTAL_HISTORY ํ ์ด๋ธ์์
2022๋ 10์ 16์ผ์ ๋์ฌ ์ค์ธ ์๋์ฐจ์ธ ๊ฒฝ์ฐ '๋์ฌ์ค' ์ด๋ผ๊ณ ํ์ํ๊ณ ,
1. ๋์ฌ ์ค์ด์ง ์์ ์๋์ฐจ์ธ ๊ฒฝ์ฐ '๋์ฌ ๊ฐ๋ฅ'์ ํ์ํ๋ ์ปฌ๋ผ (์ปฌ๋ผ๋ช : AVAILABILITY)์ ์ถ๊ฐํ์ฌ
2. ์๋์ฐจ ID์ AVAILABILITY ๋ฆฌ์คํธ๋ฅผ ์ถ๋ ฅํ๋ SQL๋ฌธ์ ์์ฑํด์ฃผ์ธ์.
์ด๋ ๋ฐ๋ฉ ๋ ์ง๊ฐ 2022๋ 10์ 16์ผ์ธ ๊ฒฝ์ฐ์๋ '๋์ฌ์ค'์ผ๋ก ํ์ํด์ฃผ์๊ณ
๊ฒฐ๊ณผ๋ ์๋์ฐจ ID๋ฅผ ๊ธฐ์ค์ผ๋ก ๋ด๋ฆผ์ฐจ์ ์ ๋ ฌํด์ฃผ์ธ์.
ํ์ด
์ฐ์ ์ด ๋ฌธ์ ์ ๊ฒฝ์ฐ 1๋ฒ๊ณผ 2๋ฒ ์กฐ๊ฑด์ด ์๋นํ ๊น๋ค๋ก์ ๋ค.
1๋ฒ์ ๊ฒฝ์ฐ case when์ ์ด์ฉํ์ฌ ์ฝ๊ฒ AVAILABILITY์ ๋ด์ฉ์ ์์ฑํ๋ฉด ๋์๋๋ฐ,
์ด์ ์ด๊ฑธ CAR_ID ๋ณ๋ก group by ๋ฅผ ํด์ค์ผํ๋ค.
ํ ์ฐจ์ ๋ํ์ฌ ๋์ฌ๊ธฐ๋ก์ด ์ฌ๋ฌ๊ฐ ์์ผ๋ฉด '๋์ฌ์ค' ๊ณผ '๋์ฌ๊ฐ๋ฅ'์ด ๋๋ค ๋์ค๊ฒ ๋๋๋ฐ,
ํ CAR_ID๊ฐ ๋๊ฐ์ง ์ํ๋ฅผ ๋ค ๊ฐ์ง๋ค๋ค๋ฉด '๋์ฌ์ค'์ด ๋จ๋๋ก ํด์ผํ๋ค.
๋ด ํ์ด์ ๊ฒฝ์ฐ ๊ฐ๊ฒฐํ ํ์ด๋ฅผ ์ํด ๊ผผ์๊ฐ ๋ค์ด์๋๋ฐ, '๋์ฌ์ค' ์ด '๋์ฌ๊ฐ๋ฅ'๋ณด๋ค ๋ฌธ์์ด์ด ๋ ํฌ๊ธฐ ๋๋ฌธ์
group by ์ดํ max๋ฅผ ์ด์ฉํ์๋ค
-- ์ฝ๋๋ฅผ ์
๋ ฅํ์ธ์
SELECT CAR_ID,
max(case when '2022-10-16' 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