๐ 1. ํน์ ์ต์ ์ด ํฌํจ๋ ์๋์ฐจ ๋ฆฌ์คํธ ๊ตฌํ๊ธฐ
๋ฌธ์
CAR_RENTAL_COMPANY_CAR ํ ์ด๋ธ์์ '๋ค๋น๊ฒ์ด์ ' ์ต์ ์ด ํฌํจ๋ ์๋์ฐจ ๋ฆฌ์คํธ๋ฅผ ์ถ๋ ฅํ๋ SQL๋ฌธ์ ์์ฑํด์ฃผ์ธ์. ๊ฒฐ๊ณผ๋ ์๋์ฐจ ID๋ฅผ ๊ธฐ์ค์ผ๋ก ๋ด๋ฆผ์ฐจ์ ์ ๋ ฌํด์ฃผ์ธ์.
โญ ์ ๋ต์ฝ๋
SELECT *
FROM CAR_RENTAL_COMPANY_CAR
WHERE OPTIONS LIKE '%๋ค๋น๊ฒ์ด์
%'
ORDER BY CAR_ID DESC;
๐ 2. ์๋์ฐจ ๋์ฌ ๊ธฐ๋ก์์ ์ฅ๊ธฐ/๋จ๊ธฐ ๋์ฌ ๊ตฌ๋ถํ๊ธฐ
๐ ํ๋ฆฐ์ฝ๋
SELECT HISTORY_ID, CAR_ID,
DATE_FORMAT(START_DATE, '%Y-%m-%d'),
DATE_FORMAT(END_DATE, '%Y-%m-%d'),
CASE WHEN DATEDIFF(END_DATE, START_DATE) >= 30 THEN '์ฅ๊ธฐ ๋์ฌ'
ELSE '๋จ๊ธฐ ๋์ฌ'
END AS RENT_TYPE
FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY
WHERE START_DATE LIKE '2022-09%'
ORDER BY HISTORY_ID DESC;
WHERE ์ ์ START_DATE ๊ฐ DATE ํ์ ์ธ๋ฐ ๋ฌธ์์ด๋ก ์กฐํํด์ ํ๋ฆฐ ๊ฒ ๊ฐ์
LIKE ๋์ BETWEEN ์ผ๋ก ์์ ํด ์ค
๋ค์ ์ค๋ต์ฒ๋ฆฌ ๋จ
SELECT HISTORY_ID, CAR_ID, DATE_FORMAT(START_DATE, '%Y-%m-%d'),
DATE_FORMAT(END_DATE, '%Y-%m-%d'),
CASE WHEN DATEDIFF(END_DATE, START_DATE) >= 30 THEN '์ฅ๊ธฐ ๋์ฌ'
ELSE '๋จ๊ธฐ ๋์ฌ'
END AS RENT_TYPE
FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY
WHERE START_DATE BETWEEN '2022-09-01' AND '2022-09-30'
ORDER BY HISTORY_ID DESC;
SELECT ์ ์ DATE_FORMAT ๋ถ๋ถ์ ๋ณ์นญ์ ์ค
๋ ์ค๋ต์ฒ๋ฆฌ ๋จ
SELECT HISTORY_ID, CAR_ID,
DATE_FORMAT(START_DATE, '%Y-%m-%d') AS START_DATE,
DATE_FORMAT(END_DATE, '%Y-%m-%d') AS END_DATE,
CASE WHEN DATEDIFF(END_DATE, START_DATE) >= 30 THEN '์ฅ๊ธฐ ๋์ฌ'
ELSE '๋จ๊ธฐ ๋์ฌ'
END AS RENT_TYPE
FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY
WHERE START_DATE BETWEEN '2022-09-01' AND '2022-09-30'
ORDER BY HISTORY_ID DESC;
๋ด ์ฟผ๋ฆฌ๋ฌธ์ ์ ์ถ๋ ฅ๋๊ณ ์คํ ๊ฒฐ๊ณผ๋ ์ถ๋ ฅ ์์๋ ๊ฐ๋ค.
์กฐ๊ฑด์ด ์๋ชป๋ ๊ฑฐ ๊ฐ๋ค.
โญ ์ ๋ต์ฝ๋
SELECT HISTORY_ID, CAR_ID,
DATE_FORMAT(START_DATE, '%Y-%m-%d') AS START_DATE,
DATE_FORMAT(END_DATE, '%Y-%m-%d') AS END_DATE,
CASE WHEN DATEDIFF(END_DATE, START_DATE) >= 29 THEN '์ฅ๊ธฐ ๋์ฌ'
ELSE '๋จ๊ธฐ ๋์ฌ'
END AS RENT_TYPE
FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY
WHERE START_DATE BETWEEN '2022-09-01' AND '2022-09-30'
ORDER BY HISTORY_ID DESC;
๋๋
SELECT HISTORY_ID, CAR_ID,
DATE_FORMAT(START_DATE, '%Y-%m-%d') AS START_DATE,
DATE_FORMAT(END_DATE, '%Y-%m-%d') AS END_DATE,
CASE WHEN DATEDIFF(END_DATE, START_DATE) < 29 then '๋จ๊ธฐ ๋์ฌ'
ELSE '์ฅ๊ธฐ ๋์ฌ'
END AS RENT_TYPE
FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY
WHERE START_DATE BETWEEN '2022-09-01' AND '2022-09-30'
ORDER BY HISTORY_ID DESC;
๋ด ์ฝ๋ ์์ ์
CASE WHEN DATEDIFF(END_DATE, START_DATE) >= 30 THEN '์ฅ๊ธฐ ๋์ฌ'
ELSE '๋จ๊ธฐ ๋์ฌ'
๋ด ์ฝ๋์์ ํ
CASE WHEN DATEDIFF(END_DATE, START_DATE) < 29 then '๋จ๊ธฐ ๋์ฌ'
ELSE '์ฅ๊ธฐ ๋์ฌ'
์ด ๋ฌธ์ ๊ฐ ์ค๋ต๋ฅ ์ด ๋์ ์ด์ ๋ ๋ ์ง ๊ณ์ฐ ์ฐจ์ด ๋๋ฌธ
์ฒ์์๋ ์๋์ฒ๋ผ ์๊ฐํ๋ค.
DATEDIFF(END_DATE, START_DATE)๊ฐ 30์ผ ์ด์์ด๋ฉด '์ฅ๊ธฐ ๋์ฌ'๋ก ์ฒ๋ฆฌ.
๊ทธ๋ ์ง ์์ผ๋ฉด '๋จ๊ธฐ ๋์ฌ'๋ก ์ฒ๋ฆฌ.
์ฆ, 30์ผ ์ด์๊ณผ 30์ผ ๋ฏธ๋ง์ผ๋ก ๋๋๋ ๊ตฌ์กฐ
ํ์ง๋ง ๋ฌธ์ ๋ฅผ ํ ๋ ๊ฐ๊ณผํ ์ฌ์ค์ด ์๋ค.
๋น๋ฆฐ ๋น์ผ์ ๋ฐ๋ฉํ๋ฉด ๊ทธ ๋์ฌ๊ธฐ๊ฐ์ ๋ฉฐ์น ์ผ๊น?
๋น๋ฆฐ ๋น์ผ์ ๋ฐ๋ฉํ ๊ฒฝ์ฐ, ๋์ฌ ๊ธฐ๊ฐ์ 1์ผ๋ก ๊ฐ์ฃผํ๋ ๊ฒ์ด ์ผ๋ฐ์ ์ด๋ค.
๋ณดํต ๋์ฌ ์๋น์ค์์๋ "๋์ฌ ์์์ผ๊ณผ ๋ฐ๋ฉ์ผ์ด ๋์ผ"ํด๋, ๋์ฌ ๊ธฐ๊ฐ์ ์ต์ 1์ผ๋ก ๊ณ์ฐํ๋ค.
DATEDIFF(END_DATE, START_DATE) ํจ์๋ END_DATE์ START_DATE์ ์ผ ๋จ์ ์ฐจ์ด๋ฅผ ๊ณ์ฐํ๋ ํจ์์ธ๋ฐ ์๋ฅผ ๋ค์ด์ DATEDIFF('2022-09-01', '2022-09-01')์ ๊ฒฐ๊ณผ๋ 0์ด๋ค. ํ์ง๋ง ์ค์ ๋์ฌ ๊ธฐ๊ฐ์ผ๋ก๋ "๋น๋ฆฐ ๋ ์ ํฌํจ"ํด ์ต์ 1์ผ๋ก ๊ฐ์ฃผํด์ผ ํ๋ค. ์ผ๋จ ๋น๋ฆฌ๊ณ ๋น์ผ ๋ฐ๋ฉํ๋ค๊ณ ํ๋๋ผ๋ ๋์ฌ ๊ธฐ๊ฐ์ 1์ผ์ด๊ธฐ ๋๋ฌธ์ด๋ค.
ํ ๋ง๋๋ก ๋์ฌ ์์์ผ๊ณผ ๋์ฌ ์ข
๋ฃ์ผ ๋๋ค ๋์ฌ๊ธฐ๊ฐ์ ํฌํจ๋๋ค.
๋ฐ๋ผ์ DATEDIFF ํจ์์ฐ๊ณ + 1 ํด์ค์ผ ํ๋ค.
๊ทธ๋์ DATEDIFF < 29์ผ ๋๋ฅผ '๋จ๊ธฐ ๋์ฌ'๋ก ๊ฐ์ฃผํ๊ณ
29 ๋ฏธ๋ง๋ฅผ ๋จ๊ธฐ ๋์ฌ๋ก ์ฒ๋ฆฌํ๊ณ , 29 ์ด์(ELSE ๊ตฌ๋ฌธ)์ ์ฅ๊ธฐ ๋์ฌ๋ก ๊ฐ์ฃผํ๋๋ก ์กฐ๊ฑด์ ์์ ํ๋ค.
๐ ์ต์ ์ฝ๋
SELECT HISTORY_ID, CAR_ID,
DATE_FORMAT(START_DATE, '%Y-%m-%d') AS START_DATE,
DATE_FORMAT(END_DATE, '%Y-%m-%d') AS END_DATE,
IF(DATEDIFF(END_DATE, START_DATE) >= 29, '์ฅ๊ธฐ ๋์ฌ', '๋จ๊ธฐ ๋์ฌ') AS RENT_TYPE
FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY
WHERE DATE_FORMAT(START_DATE, '%Y%m') = '202209'
ORDER BY HISTORY_ID DESC;
IF๋ฌธ์ผ๋ก 3ํญ ์ฐ์ฐ์์ฒ๋ผ ์ธ ์ ์๊ตฌ๋...
IF(condition, value_if_true, value_if_false)
IF(DATEDIFF(END_DATE, START_DATE) >= 29, '์ฅ๊ธฐ ๋์ฌ', '๋จ๊ธฐ ๋์ฌ') AS RENT_TYPE