도토리 줍는 개발자 김지무

프로그래머스 GROUP BY입양 시각 구하기(1) Oracle - jimoo 본문

SQL공부

프로그래머스 GROUP BY입양 시각 구하기(1) Oracle - jimoo

지무 2021. 10. 5. 01:38
728x90
반응형

잡담: 글 쓰고 있는데 갑자기 노트북이 지멋대로!!!!! 재부팅 됐다,,,,,,,, ㅠㅠ 쓰던 글이 다 사라져서 두 번째 쓰는중이다,,ㅠㅠㅠㅠ 주륵주륵

 

https://programmers.co.kr/learn/courses/30/lessons/59412

 

코딩테스트 연습 - 입양 시각 구하기(1)

ANIMAL_OUTS 테이블은 동물 보호소에서 입양 보낸 동물의 정보를 담은 테이블입니다. ANIMAL_OUTS 테이블 구조는 다음과 같으며, ANIMAL_ID, ANIMAL_TYPE, DATETIME, NAME, SEX_UPON_OUTCOME는 각각 동물의 아이디, 생물

programmers.co.kr

입양 시각 구하기(1) 문제

보호소에서는 몇 시에 입양이 가장 활발하게 일어나는지 알아보려 합니다. 09:00부터 19:59까지, 각 시간대별로 입양이 몇 건이나 발생했는지 조회하는 SQL문을 작성해주세요. 이때 결과는 시간대 순으로 정렬해야 합니다.

 

정답코드

SELECT TO_CHAR(DATETIME,'HH24') AS HOUR, COUNT(*) AS COUNT
FROM ANIMAL_OUTS
WHERE TO_CHAR(DATETIME,'HH24') BETWEEN 09 AND 19
GROUP BY TO_CHAR(DATETIME,'HH24')
ORDER BY TO_CHAR(DATETIME,'HH24')

풀이

1. SELECT TO_CHAR(DATETIME,'HH24')

: 이 쿼리문은 자료형이 DATETIME인 DATETIME 컬럼의 데이터를 24시간형식으로 변환시켜준다. 

- TO_CHAR() 정리

 함수는 날짜, 숫자 등의 값을 문자열로 변환하는 함수이다.

SELECT TO_CHAR(컬럼명(변환하고자하는 데이터값), '포맷형식')
FROM 테이블 명

포맷 형식은 여러 가지가 있다! 

연도만 출력하고 싶다면 'YYYY'

월은 'MM', 날짜는 'DD'

시간은 24시로 나타낼경우 'HH24'

12시간으로 나타내고 싶은 경우는 'HH'

분은 'MI', 초는 'SS'로 지정해주면된다. 

혹은 2000-01-20 형식으로 나타내고 싶다면 'YYYY-MM-DD' 을 포맷형식에 작성해주면 된다.

 

2. WHRER TO_CHAR(DATETIME,'HH24') BETWEEN 09 AND 19

: 09:00부터 19:59 사이의 시간에 입양된 동물들만 확인하기 때문에 09시부터 19시까지의 시간에 입양된 동물들만 카운트하게 해야한다.  따라서 DATETIME 컬럼의 데이터를 24시간으로 변환시킨 값들 중에서 BETWEEN 09 AND 19 를 통해 09~19에 해당하는 값만 조회하도록 한다. 

 

3. GROUPBY TO_CHAR(DATETIME,'HH24')

: GROUP BY를 통해 DATETIME 을 기준으로 그룹화한다. 그러면 그룹화된 각 시간대별로의 count를 할 수 있게 된다.  (SELECT 절의 COUNT(*) AS COUNT 에 해당)

728x90
반응형
Comments