<๋ฐ์ดํฐ ์ฒดํฌ>
<
๋ฌธ์ ์ถ์ฒ: ํ๋ก๊ทธ๋๋จธ์ค, ์๋์ฐจ ํ๊ท ๋์ฌ ๊ธฐ๊ฐ ๊ตฌํ๊ธฐ
ํ ์ด๋ธ๋ช : car_rental_company_rental_history์ด๋ ์๋์ฐจ ๋์ฌ์ ์ ๋์ฌ ๊ธฐ๋ก ํ ์ด๋ธ ๊ฒฌ๋ณธ
์ปฌ๋ผ๋ช : history_id๋์ฌ ๊ธฐ๋ก ์์ด๋, car_id์๋์ฐจ ์์ด๋, start_date๋์ฌ์์์ผ, end_date๋์ฌ์ข ๋ฃ์ผ
๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ตฌ์ฑ: 1๊ฐ ํ ์ด๋ธ, 4๊ฐ ์ปฌ๋ผ, 160๊ฐ ๋ก์ฐ
>
>
<์๋๋ฆฌ์ค>
์ฌ๊ธฐ ์ด๋ค ์๋์ฐจ ๋์ฌ์ ์ด ์๋ค. ์ด ์๋์ฐจ ๋์ฌ์ ์์๋ ๊ธฐ์กด ๊ณ ๊ฐ๋ค์ ํ์คํ ์ก์๋๊ธฐ ์ํด ์ฃผ ๊ณ ๊ฐ์ธต์ ์ต๋ํ์ ๊ฐ๊ฒฉ ๋ฉ๋ฆฌํธ๋ฅผ ๋ถ์ฌํ๋ ๋ฐฉํฅ์ผ๋ก ๊ฐ๊ฒฉ ์ ์ฑ ์ ๊ฐํธํ๋ ค๊ณ ํ๋ค. ์ด๋ฒ EDAํ์์ ๋ฐ์ดํฐ ๋ถ์๋ ์ด๋ฅผ ์ํ ๊ณ ๊ฐ ์ธ๋ถํ ๊ณผ์ ์ด๋ค. ํ๊ท ๋์ฌ ๊ธฐ๊ฐ์ด 7์ผ ์ด์์ธ ์๋์ฐจ๋ค์ ํ๊ท ๋์ฌ ๊ธฐ๊ฐ(์ปฌ๋ผ๋ช : average_duration) ๋ฆฌ์คํธ๋ฅผ ์ถ๋ ฅํ๋ SQL๋ฌธ์ ์์ฑํ๋ ค๋ฉด ์ด๋ป๊ฒ ํด์ผ ํ ๊น?
<ํ์ด>
๋จผ์ ๋ฌธ์ ๋ฅผ ํด์ํ๊ธฐ ์ํด์๋ ์ ์ฒด ๋ฆฌ์คํธ์ ํ๊ท ๋์ฌ ๊ธฐ๊ฐ์ ๋ฆฌ์คํธํํด์ผ ํ๋ค. ํํธํ๋์ด ์๋ ๋ฐ์ดํฐ๋ฅผ ๊ทธ๋ฃน์ผ๋ก ๋ฌถ์ด ์ฃผ๊ณ ,
GROUP BY car_id
์ด ๋ฐ์ดํฐ์ ๊ธฐ์ค์ผ๋ก ํ๊ท ๋์ฌ ๊ธฐ๊ฐ์ ๋ฝ๋๋ค. ๋์ฌ ๊ธฐ๊ฐ์ ๋์ฌ์ข ๋ฃ์ผ๊ณผ ๋์ฌ์์์ผ์ ์ฐจ๋ก ๊ณ์ฐ๋ ์ ์๋๋ฐ, ์ด ๋ ๋์ฌ์์์ผ ์ญ์ ํ๋ฃจ๋ก ๊ณ์ฐ๋๊ธฐ ๋๋ฌธ์ ๊ผญ 1์ ๋ํด ์ค์ผ ํ๋ค. ์ด ๊ฐ์ ํ๊ท ์ ์ ์ฉํด ์ฃผ๊ณ ๊ฐ๋ ์ฑ์ ์ํด ์์์ ์ฒซ์งธ ์๋ฆฌ๊น์ง ๋ฐ์ฌ๋ฆผํ๋ ์ฟผ๋ฆฌ๋ฅผ ๋ค์๊ณผ ๊ฐ์ด ์งค ์ ์๋ค.
SELECT car_id
, ROUND(AVG(DATEDIFF(end_date, start_date) + 1), 1) average_duration
์ด ์ค์์ ํ๊ท ๋์ฌ ๊ธฐ๊ฐ์ด 7์ผ ์ด์์ธ ๊ฐ์ ๋ฝ์ผ๋ ค๋ฉด HAVING์ ์กฐ๊ฑด์ ์ถ๊ฐํด์ฃผ๋ฉด ๋๋ค. WHERE๊ฐ ์๋ HAVING์ ๋ฃ๋ ์ด์ ๋ ๊ทธ๋ฃน์ ์ง๊ณ๊ฐ(AVG) ๊ธฐ์ค์ผ๋ก ์ฐ์ฐํด์ผ ํ๊ธฐ ๋๋ฌธ์ด๋ค.
HAVING average_duration >= 7
๋ง๋ฌด๋ฆฌํ๋ฉด, ์์ฑ๋ ์์ ์๋์ ๊ฐ์ ๊ฒ์ด๋ค.
SELECT car_id
, ROUND(AVG(DATEDIFF(end_date, start_date) + 1), 1) average_duration
FROM car_rental_company_rental_history
GROUP BY car_id
HAVING average_duration >= 7
ORDER BY average_duration DESC, car_id DESC
'TOOLS > SQL' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
SQL: SELECT/ FROM/ WHERE ์ ์๋ธ ์ฟผ๋ฆฌ Subquery (0) | 2024.03.07 |
---|---|
SQL ๋ฌธ์ ํ์ด: ๋์๋ฌธ์ ๊ตฌ๋ถ ์์ด ์กฐํํ๋ ์กฐ๊ฑด ์ค์ ํ๊ธฐ, LOWER (0) | 2024.02.28 |
SQL: mysql์์์ FULL OUTER JOIN (0) | 2024.02.21 |
SQL ๋ฌธ์ ํ์ด: ์กฐ๊ฑด์ ๋ง๋ ๋ค์คํ ์ถ๋ ฅ, ๋ค์คํ ์๋ธ์ฟผ๋ฆฌ+ ์๋์ฐ ํจ์ (0) | 2024.02.21 |
SQL: ์๋์ฐ ํจ์Window Function VS GROUP BY (0) | 2024.02.20 |