๐ข ๋ณธ ํฌ์คํ ์ ํ์ฉ๋๋ ๊ธฐ๋ณธ ๋ฌธ์ ๋ฐ ์๋ฃ ์ถ์ฒ๋
ํ๋ก๊ทธ๋๋จธ์ค ์ฝ๋ฉํ
์คํธ ์ฐ์ต,
https://school.programmers.co.kr/learn/challenges?page=1&languages=mysql%2Coracle์์ ๋ฐํ๋๋ค.
โ ๋ฌธ์
๋ฌธ์ ์ค๋ช
๋ค์์ ์ด๋ ์๋์ฐจ ๋์ฌ ํ์ฌ์ ์๋์ฐจ ๋์ฌ ๊ธฐ๋ก ์ ๋ณด๋ฅผ ๋ด์ CAR_RENTAL_COMPANY_RENTAL_HISTORY ํ ์ด๋ธ์ ๋๋ค. CAR_RENTAL_COMPANY_RENTAL_HISTORY ํ ์ด๋ธ์ ์๋์ ๊ฐ์ ๊ตฌ์กฐ๋ก ๋์ด์์ผ๋ฉฐ, HISTORY_ID, CAR_ID, START_DATE, END_DATE ๋ ๊ฐ๊ฐ ์๋์ฐจ ๋์ฌ ๊ธฐ๋ก ID, ์๋์ฐจ ID, ๋์ฌ ์์์ผ, ๋์ฌ ์ข ๋ฃ์ผ์ ๋ํ๋ ๋๋ค.
Column name | Type | Nullable |
HISTORY_ID | INTEGER | FALSE |
CAR_ID | INTEGER | FALSE |
START_DATE | DATE | FALSE |
END_DATE | DATE | FALSE |
๋ฌธ์
CAR_RENTAL_COMPANY_RENTAL_HISTORY ํ ์ด๋ธ์์ ๋์ฌ ์์์ผ์ ๊ธฐ์ค์ผ๋ก 2022๋ 8์๋ถํฐ 2022๋ 10์๊น์ง ์ด ๋์ฌ ํ์๊ฐ 5ํ ์ด์์ธ ์๋์ฐจ๋ค์ ๋ํด์ ํด๋น ๊ธฐ๊ฐ ๋์์ ์๋ณ ์๋์ฐจ ID ๋ณ ์ด ๋์ฌ ํ์(์ปฌ๋ผ๋ช : RECO RDS) ๋ฆฌ์คํธ๋ฅผ ์ถ๋ ฅํ๋ SQL๋ฌธ์ ์์ฑํด์ฃผ์ธ์. ๊ฒฐ๊ณผ๋ ์์ ๊ธฐ์ค์ผ๋ก ์ค๋ฆ์ฐจ์ ์ ๋ ฌํ๊ณ , ์์ด ๊ฐ๋ค๋ฉด ์๋์ฐจ ID๋ฅผ ๊ธฐ์ค์ผ๋ก ๋ด๋ฆผ์ฐจ์ ์ ๋ ฌํด์ฃผ์ธ์. ํน์ ์์ ์ด ๋์ฌ ํ์๊ฐ 0์ธ ๊ฒฝ์ฐ์๋ ๊ฒฐ๊ณผ์์ ์ ์ธํด์ฃผ์ธ์.
โ ํ์ด
๋ฌธ์ ์๊ตฌ์ฌํญ
๋์ฌ ์์์ผ์ ๊ธฐ์ค์ผ๋ก 2022๋ 8์๋ถํฐ 2022๋ 10์๊น์ง ์ด ๋์ฌ ํ์๊ฐ 5ํ ์ด์์ธ ์๋์ฐจ๋ค์ ๋ํด์
> ๋ ์ง์กฐ๊ฑด (2022.08 ~ 2022.10) ← WHERE์ ์ BETWEEN๋ฌธ๋ฒ ์ฌ์ฉ
์๋์ฐจ๋ณ(GROUP BY CAR_ID) ์ด ๋์ฌํ์(COUNT(*)) ๊ฐ 5ํ ์ด์
๋ฐ์ดํฐ๋ฅผ GROUPํ ์ง๊ณํจ์์ ๋ํ ์กฐ๊ฑด์ด๋ฏ๋ก HAVING์ * ์กฐ๊ฑด1
----------------------------------------------------------------------------------------------------------------------------------
>> '์ ๋ฐ์ดํฐ๋ค์ ๋ํด์'์ด๋ฏ๋ก ์กฐ๊ฑด์ ๋ถํฉํ๋ ์๋์ฐจ(CAR_ID)๋ฅผ ๊ตฌํ๋ ์๋ธ์ฟผ๋ฆฌ๋ฅผ ๋ฉ์ธ์ฟผ๋ฆฌ WHERE์ ์ IN ๋ฌธ๋ฒ์ผ๋ก ๋ฃ์ด์ค๋ค.
>>> (์ค์) WHERE์ ์ ์๋ธ์ฟผ๋ฆฌ์ ๋ฒ์์ ํด๋นํ๋ CAR_ID๋ฅผ ์ถ์ถํ๊ธฐ ๋๋ฌธ์ ๋ฉ์ธ์ฟผ๋ฆฌ์์๋ ์กฐ๊ฑด์ ๋ง๋ CAR_ID ์ RENTAL_HISTORY๊ฐ ๋ค ์ถ๋ ฅ๋๋ฏ๋ก ๋ฉ์ธ์ฟผ๋ฆฌ WHERE์ ์์ ๋์ฌ ์์์ผ ๊ธฐ์ค ๋ฒ์๋ฅผ ํ๋ฒ๋ 2022-08 ~ 2022-10๋ก ์ก์์ค์ผ ํ๋ค.
๊ฒฐ๊ณผ๋ ์์ ๊ธฐ์ค์ผ๋ก ์ค๋ฆ์ฐจ์ ์ ๋ ฌ > ์ ๋ ฌ์กฐ๊ฑด1
์์ด ๊ฐ๋ค๋ฉด ์๋์ฐจ ID๋ฅผ ๊ธฐ์ค์ผ๋ก ๋ด๋ฆผ์ฐจ์ ์ ๋ ฌ > ์ ๋ ฌ์กฐ๊ฑด2
ํน์ ์์ ์ด ๋์ฌ ํ์๊ฐ 0์ธ ๊ฒฝ์ฐ์๋ ๊ฒฐ๊ณผ์์ ์ ์ธ > *HAVING์ ์ AND์ ๋ก ์กฐ๊ฑด2๋ก ์ถ๊ฐ
SELECT MONTH(START_DATE) AS MONTH,
CAR_ID,
COUNT(HISTORY_ID) AS RECORDS
FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY
WHERE CAR_ID IN (SELECT CAR_ID
FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY
WHERE START_DATE BETWEEN '2022-08-01 00:00:00' AND '2022-10-31 23:59:59'
GROUP BY 1
HAVING COUNT(HISTORY_ID) >= 5
AND COUNT(HISTORY_ID) != 0)
AND START_DATE BETWEEN '2022-08-01 00:00:00' AND '2022-10-31 23:59:59'
GROUP BY 1, 2
ORDER BY 1, 2 DESC
'Growth ๐ณ > Practice ๐ป' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ํด์ปค๋ญํฌ] Top Earners (0) | 2023.01.29 |
---|---|
[ํด์ปค๋ญํฌ] Weather Observation Station 16 (0) | 2023.01.28 |
[ํ๋ก๊ทธ๋๋จธ์ค] ์๋์ฐจ ์ข ๋ฅ๋ณ ํน์ ์ต์ ์ด ํฌํจ๋ ์๋์ฐจ ์ ๊ตฌํ๊ธฐ (0) | 2023.01.15 |
[ํ๋ก๊ทธ๋๋จธ์ค] ์์ด์ง ๊ธฐ๋ก ์ฐพ๊ธฐ(2์ฐจํ์ด) / ๋ฌธ์ ํน์ด์ ๋ฐ๊ฒฌ (0) | 2023.01.14 |
[ํ๋ก๊ทธ๋๋จธ์ค] NULL ์ฒ๋ฆฌํ๊ธฐ (0) | 2023.01.14 |