SQL

[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค level 3] ์ž๋™์ฐจ ๋Œ€์—ฌ ๊ธฐ๋ก์—์„œ ๋Œ€์—ฌ์ค‘ / ๋Œ€์—ฌ ๊ฐ€๋Šฅ ์—ฌ๋ถ€ ๊ตฌ๋ถ„ํ•˜๊ธฐ

1eehyunji 2023. 7. 14. 15:45

๋ฌธ์ œ ์„ค๋ช…

๋‹ค์Œ์€ ์–ด๋А ์ž๋™์ฐจ ๋Œ€์—ฌ ํšŒ์‚ฌ์˜ ์ž๋™์ฐจ ๋Œ€์—ฌ ๊ธฐ๋ก ์ •๋ณด๋ฅผ ๋‹ด์€ 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๋ฐ์ดํ„ฐ๋ฅผ ๊ทธ๋ฃนํ™”ํ•ด์ค˜์•ผ ํ•œ๋‹ค.