ํ๋ก๊ทธ๋๋จธ์ค_์ ์ ์๊ฐ ๊ตฌํ๊ธฐ(1)
๋ฌธ์ ์ค๋ช
https://school.programmers.co.kr/learn/courses/30/lessons/59412
ํ๋ก๊ทธ๋๋จธ์ค
SW๊ฐ๋ฐ์๋ฅผ ์ํ ํ๊ฐ, ๊ต์ก, ์ฑ์ฉ๊น์ง Total Solution์ ์ ๊ณตํ๋ ๊ฐ๋ฐ์ ์ฑ์ฅ์ ์ํ ๋ฒ ์ด์ค์บ ํ
programmers.co.kr
ANIMAL_OUTS ํ ์ด๋ธ์ ๋๋ฌผ ๋ณดํธ์์์ ์ ์ ๋ณด๋ธ ๋๋ฌผ์ ์ ๋ณด๋ฅผ ๋ด์ ํ ์ด๋ธ์ ๋๋ค. ANIMAL_OUTS ํ ์ด๋ธ ๊ตฌ์กฐ๋ ๋ค์๊ณผ ๊ฐ์ผ๋ฉฐ, ANIMAL_ID, ANIMAL_TYPE, DATETIME, NAME, SEX_UPON_OUTCOME๋ ๊ฐ๊ฐ ๋๋ฌผ์ ์์ด๋, ์๋ฌผ ์ข , ์ ์์ผ, ์ด๋ฆ, ์ฑ๋ณ ๋ฐ ์ค์ฑํ ์ฌ๋ถ๋ฅผ ๋ํ๋ ๋๋ค.
NAME | TYPE | NULLABLE |
ANIMAL_ID | VARCHAR(N) | FALSE |
ANIMAL_TYPE | VARCHAR(N) | FALSE |
DATETIME | DATETIME | FALSE |
NAME | VARCHAR(N) | TRUE |
SEX_UPON_OUTCOME | VARCHAR(N) | FALSE |
๋ฌธ์
๋ณดํธ์์์๋ ๋ช ์์ ์ ์์ด ๊ฐ์ฅ ํ๋ฐํ๊ฒ ์ผ์ด๋๋์ง ์์๋ณด๋ ค ํฉ๋๋ค. 09:00๋ถํฐ 19:59๊น์ง, ๊ฐ ์๊ฐ๋๋ณ๋ก ์ ์์ด ๋ช ๊ฑด์ด๋ ๋ฐ์ํ๋์ง ์กฐํํ๋ SQL๋ฌธ์ ์์ฑํด ์ฃผ์ธ์. ์ด๋ ๊ฒฐ๊ณผ๋ ์๊ฐ๋ ์์ผ๋ก ์ ๋ ฌํด์ผ ํฉ๋๋ค.
์์
SQL๋ฌธ์ ์คํํ๋ฉด ๋ค์๊ณผ ๊ฐ์ด ๋์์ผ ํฉ๋๋ค.
HOUR | COUNT |
9 | 1 |
10 | 2 |
11 | 13 |
12 | 10 |
13 | 17 |
14 | 9 |
15 | 7 |
16 | 10 |
17 | 12 |
18 | 16 |
19 | 2 |
๋ด๊ฐ ์์ฑํ ์ฝ๋
SELECT
CASE
WHEN HOUR(DATETIME) >= 7 AND HOUR(DATETIME) < 8 THEN '7'
WHEN HOUR(DATETIME) >= 8 AND HOUR(DATETIME) < 9 THEN '8'
WHEN HOUR(DATETIME) >= 9 AND HOUR(DATETIME) < 10 THEN '9'
WHEN HOUR(DATETIME) >= 10 AND HOUR(DATETIME) < 11 THEN '10'
WHEN HOUR(DATETIME) >= 11 AND HOUR(DATETIME) < 12 THEN '11'
WHEN HOUR(DATETIME) >= 12 AND HOUR(DATETIME) < 13 THEN '12'
WHEN HOUR(DATETIME) >= 13 AND HOUR(DATETIME) < 14 THEN '13'
WHEN HOUR(DATETIME) >= 14 AND HOUR(DATETIME) < 15 THEN '14'
WHEN HOUR(DATETIME) >= 15 AND HOUR(DATETIME) < 16 THEN '15'
WHEN HOUR(DATETIME) >= 16 AND HOUR(DATETIME) < 17 THEN '16'
WHEN HOUR(DATETIME) >= 17 AND HOUR(DATETIME) < 18 THEN '17'
WHEN HOUR(DATETIME) >= 18 AND HOUR(DATETIME) < 19 THEN '18'
WHEN HOUR(DATETIME) >= 19 AND HOUR(DATETIME) < 20 THEN '19'
END AS HOUR, count(*) AS COUNT
FROM ANIMAL_OUTS
GROUP BY HOUR
HAVING HOUR >= 9 AND HOUR < 20
ORDER BY HOUR(DATETIME) ASC;
์ฝ๋ ์ค๋ช
- SELECT CASE : ๊ฐ๊ฐ์ ์กฐ๊ฑด์ ๋ฐ๋ผ ๊ฐ์ ์ ์ฅํ๋ค.
- WHEN HOUR(DATETIME) >= 7 AND HOUR(DATETIME) < 8 THEN '7' : 7 ์ด์ 8 ๋ฏธ๋ง์ธ ์๊ฐ์ 7๋ก ์ ์ฅํ๋ค.
- END AS HOUR, count(*) AS COUNT : ์ค์ ํ ์๊ฐ์ ์ปฌ๋ผ๋ช ์ HOUR๋ก ์ค์ ํ๊ณ ์๊ฐ๋ณ ์ ์๊ฑด์์ ๋ํ ์ปฌ๋ผ๋ช ์ COUNT๋ก ์ค์ ํ๋ค.
- FROM ANIMAL_OUTS : ANIMAL_OUTS ํ ์ด๋ธ์์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์จ๋ค.
- GROUP BY HOUR : HOUR ์ปฌ๋ผ์ ๊ธฐ์ค์ผ๋ก ๊ทธ๋ฃนํํ๋ค.
- HAVING HOUR >= 9 AND HOUR < 20 : ๊ทธ๋ฃนํํ ๋ 9 ์ด์ 20 ๋ฏธ๋ง์ธ ๊ฐ๋ค๋ง ๊ฐ๊ฐ ๊ทธ๋ฃนํํ์ฌ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์จ๋ค.
- ORDER BY HOUR(DATETIME) ASC : HOUR์ ์๊ฐ ๊ฐ์ ๊ธฐ์ค์ผ๋ก ์ค๋ฆ์ฐจ์ ์ ๋ ฌํ๋ค.