# [프로그래머스] 입양 시각 구하기_1

- Author: @mildsalmon
- Published: 2021-09-24
- Updated: 2021-09-24
- Source: http://blex.me/@mildsalmon/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4-%EC%9E%85%EC%96%91-%EC%8B%9C%EA%B0%81-%EA%B5%AC%ED%95%98%EA%B8%B0_1
- Tags: 프로그래머스, 코딩테스트, 문제, 오라클, sql, groupby

---

# 1. 입양 시각 구하기_1

### A. 문제

위 프로그래머스 사이트에 접속하여 문제를 확인해주세요.

### B. 내 답안

##### a. 서브 쿼리

```sql

SELECT HOUR, COUNT
FROM (
SELECT TO_CHAR(DATETIME, 'HH24') AS HOUR, COUNT(TO_CHAR(DATETIME, 'HH24')) AS COUNT
    FROM ANIMAL_OUTS
    GROUP BY TO_CHAR(DATETIME, 'HH24')
    ORDER BY TO_CHAR(DATETIME, 'HH24')
)
WHERE HOUR >= 9 AND HOUR < 20;

```

##### b. 좀 더 간단하게

```sql

SELECT TO_CHAR(DATETIME, 'HH24') AS HOUR, COUNT(TO_CHAR(DATETIME, 'HH24')) AS COUNT
FROM ANIMAL_OUTS
GROUP BY TO_CHAR(DATETIME, 'HH24')
HAVING TO_CHAR(DATETIME, 'HH24') >= 9 AND TO_CHAR(DATETIME, 'HH24') < 20
ORDER BY HOUR ASC;

```

##### a. 회고

> 내 풀이

- TO_CHAR을 사용하여 시간값만 추출하여 사용했다.

> 반성

- TO_CHAR를 몰랐었다.

> 결론

- 유용한 기능들인데 모르는 것들이 점점 나오고 있다. 알때까지 하자.

### C. 문제 해설

> 이해한 내용을 바탕으로 작성했습니다.

TO_CHAR는 형 변환 함수 중 하나이다. 기능은 숫자 또는 날짜 데이터를 문자 데이터로 변환한다.

> TO_CHAR(**날짜데이터(필수)**, **'출력되길 원하는 문자 형태(필수)'**, `'NLS_DATE_LANGUAGE = language(선택)'`)

| 형식       | 설명                        |
| ---------- | --------------------------- |
| CC         | 세기                        |
| YYYY, RRRR | 연(4자리 숫자)              |
| YY, RR     | 연(2자리 숫자)              |
| MM         | 월(2자리 숫자)              |
| MON        | 월(언어별 월 이름 약자)     |
| MONTH      | 월(언어별 월 이름 전체)     |
| DD         | 일(2자리 숫자)              |
| DDD        | 1년 중 며칠 (1~366)         |
| DY         | 요일(언어별 요일 이름 약자) |
| DAY        | 요일(언어별 요일 이름 전체) |
| W          | 1년 중 몇 번째 주 (1~53)                            |

# 참고문헌

GROUP BY. [코딩테스트 연습 - 입양 시각 구하기(1) | 프로그래머스 (programmers.co.kr)](https://programmers.co.kr/learn/courses/30/lessons/59412?language=oracle). Programmers. (accessed Sep 24, 2021)
