[ํ๋ก๊ทธ๋๋จธ์ค level 2] ์๋์ฐจ ํ๊ท ๋์ฌ ๊ธฐ๊ฐ ๊ตฌํ๊ธฐ
๋ฌธ์ ์ค๋ช
๋ค์์ ์ด๋ ์๋์ฐจ ๋์ฌ ํ์ฌ์ ์๋์ฐจ ๋์ฌ ๊ธฐ๋ก ์ ๋ณด๋ฅผ ๋ด์ 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 ํ ์ด๋ธ์์ ํ๊ท ๋์ฌ ๊ธฐ๊ฐ์ด 7์ผ ์ด์์ธ ์๋์ฐจ๋ค์ ์๋์ฐจ ID์ ํ๊ท ๋์ฌ ๊ธฐ๊ฐ(์ปฌ๋ผ๋ช : AVERAGE_DURATION) ๋ฆฌ์คํธ๋ฅผ ์ถ๋ ฅํ๋ SQL๋ฌธ์ ์์ฑํด์ฃผ์ธ์. ํ๊ท ๋์ฌ ๊ธฐ๊ฐ์ ์์์ ๋๋ฒ์งธ ์๋ฆฌ์์ ๋ฐ์ฌ๋ฆผํ๊ณ , ๊ฒฐ๊ณผ๋ ํ๊ท ๋์ฌ ๊ธฐ๊ฐ์ ๊ธฐ์ค์ผ๋ก ๋ด๋ฆผ์ฐจ์ ์ ๋ ฌํด์ฃผ์๊ณ , ํ๊ท ๋์ฌ ๊ธฐ๊ฐ์ด ๊ฐ์ผ๋ฉด ์๋์ฐจ ID๋ฅผ ๊ธฐ์ค์ผ๋ก ๋ด๋ฆผ์ฐจ์ ์ ๋ ฌํด์ฃผ์ธ์.
๋ฌธ์ ํ์ด
SELECT CAR_ID, ROUND(AVG(DATEDIFF(END_DATE,START_DATE)+1),1) AS AVERAGE_DURATION
FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY
GROUP BY CAR_ID
HAVING AVERAGE_DURATION>=7
ORDER BY AVERAGE_DURATION DESC, CAR_ID DESC;
DATEDIFF ํจ์๋ฅผ ์ฒ์ ์จ๋ดค๋ค!
์ค๋ผํด์์ ๋ ๋ ์ง๋ฅผ ๋นผ๊ธฐ(-) ์ฐ์ฐํด์ฃผ๋ฉด ๋ ๋ ์ง ์ฌ์ด์ ์ฐจ์ด๋ฅผ ๊ณ์ฐํ๋ ๊ฒ์ด ๊ฐ๋ฅํ๋๋ฐ, MySQL์ DATEDIFF๋ TIMESTAMPDIFF์ ๊ฐ์ ๋ณ๋์ ํจ์๋ฅผ ์ฌ์ฉํด์ผ ํ๋ค.
1. CAR_RENTAL_COMPANY_RENTAL_HISTORY ํ ์ด๋ธ์ CAR_ID๋ฅผ ๊ธฐ์ค์ผ๋ก ๊ทธ๋ฃนํํด์ค๋ค.
2. ํ๊ท ๋์ฌ๊ธฐ๊ฐ์ ๋์ฌ ์ข ๋ฃ ๋ ์ง์ ๋์ฌ ์์ ๋ ์ง์ ์ฐจ์ด๋ฅผ ๊ตฌํ๊ณ +1 ํด์ค ๊ฐ๋ค์ ๊ฐ ์๋์ฐจ ์์ด๋ ๊ทธ๋ฃน๋ณ๋ก ํ๊ท ์ ๋ธ ๊ฐ์ด๋ค.
* +1 ํด์ฃผ๋ ์ด์ ๋ฅผ ์๋ก ๋ค์๋ฉด ๋ค์๊ณผ ๊ฐ๋ค.
2022-10-02๋ถํฐ 2022-10-04๊น์ง ๋์ฌํ๋ค๋ฉด 10์ 2,3,4์ผ ์ด 3์ผ์ ๋์ฌํ ๊ฒ์ธ๋ฐ, DATEDIFF๋ฅผ ์ด์ฉํด์ ๋จ์ํ ํด๋น ๋ ์ง์ ์ฐจ์ด๋ง์ ๊ตฌํ๋ฉด 2๊ฐ ๋๋ค. ๊ทธ๋์ +1์ ํด์ค์ ์ฌ๋ฐ๋ฅธ ๋์ฌ๊ธฐ๊ฐ์ ๊ตฌํด์ผ ํ๋ค.
3. ์ด๋ ๊ฒ AVG ํจ์์ DATEDIFF ํจ์๋ฅผ ์ด์ฉํด์ ๊ฐ ๊ทธ๋ฃน์ ํ๊ท ๋์ฌ๊ธฐ๊ฐ์ ๊ตฌํ๊ณ ๋๋ฉด, ROUND ํจ์๋ฅผ ์ด์ฉํด์ ์์์ ๋์งธ ์๋ฆฌ์์ ๋ฐ์ฌ๋ฆผํ๋, ์ฆ ์์์ ์ฒซ์งธ ์๋ฆฌ๊น์ง๋ง ํํํ๋ ์ฐ์ฐ์ ํด์ค๋ค.
4. ์ ์ฐ์ฐ๋ค์ ๊ฑฐ์ณ์ ์ต์ข ์ ์ผ๋ก ๋์ค๋ ํ๊ท ๋์ฌ๊ธฐ๊ฐ์ AVERAGE_DURATION์ผ๋ก ๋ณ์นญ์ ๋ถ์ด๊ณ , HAVING ์ ์์ AVERAGE_DURATION์ด 7 ์ด์์ธ ๋ฐ์ดํฐ๋ฅผ ์ถ์ถํ๋ค.
5. ์ด๋ ๊ฒ ์ถ์ถ๋ ๋ฐ์ดํฐ๋ค์ ์๋์ฐจ ์์ด๋์ ํ๊ท ๋์ฌ๊ธฐ๊ฐ์ ํ๊ท ๋์ฌ๊ธฐ๊ฐ๊ณผ ์๋์ฐจ ์์ด๋๋ฅผ ๊ธฐ์ค์ผ๋ก ๋ด๋ฆผ์ฐจ์ ์ ๋ ฌํ์ฌ ์ถ๋ ฅํ๋ค.