๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ’ป CS

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

by dev.py 2025. 2. 11.

 

๋ฌธ์ œ

 

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค

SW๊ฐœ๋ฐœ์ž๋ฅผ ์œ„ํ•œ ํ‰๊ฐ€, ๊ต์œก, ์ฑ„์šฉ๊นŒ์ง€ Total Solution์„ ์ œ๊ณตํ•˜๋Š” ๊ฐœ๋ฐœ์ž ์„ฑ์žฅ์„ ์œ„ํ•œ ๋ฒ ์ด์Šค์บ ํ”„

programmers.co.kr

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 AS AVAILABILITY
    
FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY
GROUP BY CAR_ID
ORDER BY CAR_ID DESC

1. "๋Œ€์—ฌ ์ค‘" "๋Œ€์—ฌ ๊ฐ€๋Šฅ" ์ปฌ๋Ÿผ์„ ์กฐ๊ฑด์— ๋”ฐ๋ผ ๋งŒ๋“ค์–ด ์ค˜์•ผ ํ–ˆ๊ธฐ์— CASE-WHEN ๋ฌธ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. CASE-WHEN ์•ˆ์—์„œ ๋Œ€์—ฌ ๋ถˆ๊ฐ€๋Šฅํ•œ CAR_ID๋ฅผ ์„œ๋ธŒ์ฟผ๋ฆฌ๋ฅผ ํ†ตํ•ด ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค.

2. ์ฐจ๋Ÿ‰ ID๋ฅผ ์ฐจ๋Ÿ‰ID ๋‚ด๋ฆผ ์ฐจ์ˆœ์œผ๋กœ ๊ฐ€์ ธ์˜ค๊ธฐ ์œ„ํ•ด GROUP BY์™€ ORDER BY๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.