[프로그래머스(Programmers)][SQL] GROUP BY (Lv2) 입양 시각 구하기(1)

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

 

 

09:00부터 19:59까지, 각 시간대별로 입양이 몇 건이나 발생했는지 시간대 순으로 조회하는 SQL

 

MySQL

SELECT HOUR( DATETIME ) HOUR, COUNT(*) COUNT
FROM ANIMAL_OUTS
GROUP BY HOUR
HAVING HOUR BETWEEN 9 AND 19
ORDER BY HOUR;

 

Oracle DB

SELECT HOUR, COUNT( * ) COUNT
FROM (
	SELECT TO_NUMBER( TO_CHAR( DATETIME, 'HH24' ) ) AS HOUR
	-- SELECT EXTRACT( HOUR FROM CAST( DATETIME AS TIMESTAMP ) ) AS HOUR
	FROM ANIMAL_OUTS
)
-- WHERE HOUR BETWEEN 9 AND 19
GROUP BY HOUR
HAVING HOUR BETWEEN 9 AND 19
ORDER BY HOUR;

 

 ※  TO_NUMBER( )  -- 입력받은 데이터( 문자열 )를 숫자로 변환

 ※  TO_CHAR( )  -- 입력받은 데이터( 숫자 / 날짜 )를 문자로 변환

 ※  EXTRACT( )  -- 날짜 타입( DATE, TIMESTAMP )의 데이터에서 특정 부분 추출

더보기
EXTRACT ( { { YEAR | MONTH | DAY | HOUR | MINUTE | SECOND } | { TIMEZONE_HOUR|MINUTE|REGION|ABGBR } } 
	 	 FROM { datetime_val_expr | interval_val_expr } )

( https://docs.oracle.com/cd/B19306_01/server.102/b14200/functions050.htm )

 ※  CAST( )  -- 형 변환

 

 

반응형