도토리 줍는 개발자 감자
프로그래머스 GROUP BY입양 시각 구하기(1) Oracle - jimoo 본문
잡담: 글 쓰고 있는데 갑자기 노트북이 지멋대로!!!!! 재부팅 됐다,,,,,,,, ㅠㅠ 쓰던 글이 다 사라져서 두 번째 쓰는중이다,,ㅠㅠㅠㅠ 주륵주륵
https://programmers.co.kr/learn/courses/30/lessons/59412
입양 시각 구하기(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 에 해당)
'SQL공부' 카테고리의 다른 글
LeetCode Oracle 176. Second Highest Salary(MAX) - jimoo (0) | 2021.10.08 |
---|---|
SQL Oracle ROWNUM=2 사용하는 방법 - jimoo (0) | 2021.10.08 |
MAX, MIN, COUNT Oracle - jimoo (0) | 2021.10.01 |
프로그래머스 SELECT(WHERE) 아픈 동물 찾기 Oracle - jimoo (0) | 2021.09.30 |
프로그래머스 SELECT (ORDER BY) 모든 레코드 조회하기 Oracle - jimoo (0) | 2021.09.30 |