๐ MySQL ์ผ๋ก ํ์ด
๐ ๋ฌธ์ ๋งํฌ :
ํ๋ก๊ทธ๋๋จธ์ค
์ฝ๋ ์ค์ฌ์ ๊ฐ๋ฐ์ ์ฑ์ฉ. ์คํ ๊ธฐ๋ฐ์ ํฌ์ง์ ๋งค์นญ. ํ๋ก๊ทธ๋๋จธ์ค์ ๊ฐ๋ฐ์ ๋ง์ถคํ ํ๋กํ์ ๋ฑ๋กํ๊ณ , ๋์ ๊ธฐ์ ๊ถํฉ์ด ์ ๋ง๋ ๊ธฐ์ ๋ค์ ๋งค์นญ ๋ฐ์ผ์ธ์.
programmers.co.kr
๐ ๋ฌธ์ ์ค๋ช :
CAR_RENTAL_COMPANY_RENTAL_HISTORY ํ ์ด๋ธ์์ ํ๊ท ๋์ฌ ๊ธฐ๊ฐ์ด 7์ผ ์ด์์ธ ์๋์ฐจ๋ค์ ์๋์ฐจ ID์ ํ๊ท ๋์ฌ ๊ธฐ๊ฐ(์ปฌ๋ผ๋ช : AVERAGE_DURATION) ๋ฆฌ์คํธ๋ฅผ ์ถ๋ ฅํ๋ SQL๋ฌธ์ ์์ฑํด์ฃผ์ธ์. ํ๊ท ๋์ฌ ๊ธฐ๊ฐ์ ์์์ ๋๋ฒ์งธ ์๋ฆฌ์์ ๋ฐ์ฌ๋ฆผํ๊ณ , ๊ฒฐ๊ณผ๋ ํ๊ท ๋์ฌ ๊ธฐ๊ฐ์ ๊ธฐ์ค์ผ๋ก ๋ด๋ฆผ์ฐจ์ ์ ๋ ฌํด์ฃผ์๊ณ , ํ๊ท ๋์ฌ ๊ธฐ๊ฐ์ด ๊ฐ์ผ๋ฉด ์๋์ฐจ ID๋ฅผ ๊ธฐ์ค์ผ๋ก ๋ด๋ฆผ์ฐจ์ ์ ๋ ฌํด์ฃผ์ธ์.
๋ค์์ ์ด๋ ์๋์ฐจ ๋์ฌ ํ์ฌ์ ์๋์ฐจ ๋์ฌ ๊ธฐ๋ก ์ ๋ณด๋ฅผ ๋ด์ CAR_RENTAL_COMPANY_RENTAL_HISTORY ํ ์ด๋ธ์ ๋๋ค. CAR_RENTAL_COMPANY_RENTAL_HISTORY ํ ์ด๋ธ์ ์๋์ ๊ฐ์ ๊ตฌ์กฐ๋ก ๋์ด์์ผ๋ฉฐ, HISTORY_ID, CAR_ID, START_DATE, END_DATE ๋ ๊ฐ๊ฐ ์๋์ฐจ ๋์ฌ ๊ธฐ๋ก ID, ์๋์ฐจ ID, ๋์ฌ ์์์ผ, ๋์ฌ ์ข ๋ฃ์ผ์ ๋ํ๋ ๋๋ค.
| HISTORY_ID | INTEGER | FALSE |
| CAR_ID | INTEGER | FALSE |
| START_DATE | DATE | FALSE |
| END_DATE | DATE | FALSE |
์ถ์ธก)
car_id๋ฅผ ๊ธฐ์ค์ผ๋ก ๊ทธ๋ฃนํ ํ๋๋ฐ
having์ ํตํด ๊ทธ๋ฃน ํต๊ณ์์ ๋ ํ ์ข ๋ฃ๋ ์ง์์ ์์๋ ์ง์์ ์ฐจ์ด๋ค์ ํ๊ท ์ ๋ด์ด 7์ผ ์ด์์ธ ๊ฒฝ์ฐ๋ง์ ํํฐ๋ง
๊ทธ๋ฆฌ๊ณ car_id์ ํ๊ท ์ 2๋ฒ์งธ ์์์ ์๋ฆฌ์์ ๋ฐ์ฌ๋ฆผํ ๊ฐ์ ์ถ๋ ฅํ ์ ์๊ฒ roundํจ์๊น์ง ์ฌ์ฉํ๋ฉด ๋ ๊ฑฐ ๊ฐ๋ค.
์ฟผ๋ฆฌ)
* 1์ฐจ) ์คํจ
SELECT CAR_ID, ROUND(AVG(END_DATE - START_DATE),1) AS AVERAGE_DURATION
FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY
GROUP BY CAR_ID
HAVING AVG(END_DATE - START_DATE) >= 7
ORDER BY AVERAGE_DURATION DESC, CAR_ID DESC
* 2์ฐจ) ์ฑ๊ณต
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 AVG(DATEDIFF(END_DATE, START_DATE) + 1) >= 7
ORDER BY AVERAGE_DURATION DESC, CAR_ID DESC
๋ฆฌ๋ทฐ)
๋จ์ํ date๋ ์ง๋ผ๋ฆฌ - ํ๋คํด์ ๊ฐ์ด ๋์ค์ง ์๋๋ค.
DATEDIFF ํจ์๋ก ๋ ์ง ์ฐจ์ด๋ฅผ ๊ตฌํด์ผ ์ ํํ ๋ ์ง ์ฐจ์ด๊ฐ ๊ณ์ฐ๋๋ค.
๊ทธ๋ฆฌ๊ณ DATEDIFF ์ ์ฐจ์ด๋ก๋ ์ฒ์ ์์ ๋ ์ง๊ฐ ํฌํจ๋์ง ์์ผ๋ +1์ด ํ์ํ๋ค!
(๋ ์ง ๊ณ์ฐํ ๋ ์ด๊ฑฐ ํญ์ ์กฐ์ฌํด์ผํ ๋ฏ)
'Coding Test > SQL' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| Programmers] ์กฐ๊ฑด์ ๋ง๋ ์ฌ์ฉ์ ์ ๋ณด ์กฐํํ๊ธฐ (0) | 2023.04.07 |
|---|---|
| Programmers] ์ต๋๊ฐ ๊ตฌํ๊ธฐ (0) | 2023.04.07 |
| Programmers] ์ํ๋ถ๋ฅ๋ณ ๊ฐ์ฅ ๋น์ผ ์ํ์ ์ ๋ณด ์กฐํํ๊ธฐ (0) | 2023.04.06 |
| Programmers] ์กฐ๊ฑด์ ๋ง๋ ์ฌ์ฉ์์ ์ด ๊ฑฐ๋๊ธ์ก ์กฐํํ๊ธฐ (0) | 2023.04.06 |
| Programmers] ์กฐ๊ฑด์ ๋ถํฉํ๋ ์ค๊ณ ๊ฑฐ๋ ์ํ ์กฐํํ๊ธฐ (0) | 2023.03.30 |
