Re:제로부터 시작하는 갓생
[MySQL] 입양 시각 구하기(1)_Lv.2 본문
문제 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는 각각 동물의 아이디, 생물 종, 입양일, 이름, 성별 및 중성화 여부를 나타냅니다. 보호소에서는 몇 시에 입양이 가장 활발하게 일어나는지 알아보려 합니다. 09:00부터 19:59까지, 각 시간대별로 입양이 몇 건이나 발생했는지 조회하는 SQL문을 작성해주세요. 이때 결과는 시간대 순으로 정렬해야 합니다.
요구사항
1. 특정 시간대별로 입양 건수를 찾아야함 select
ⓐ datetime: 시간대를 분석하기 위해 필요
ⓑ animal_id: 입양된 동물의 수를 중복없이 세기 위해 필요
2. datetime에서 시간 추출 (방법 선택): ⓐ date_format ⓑ hour ⓒ extract
3. 오전 9:00~오후 7:59까지 시간대 필터링 when
4. 시간대 그룹화 group by
5. 시간대별 입양 건수 세기 count
6. 결과는 시간대 순으로 오름차순 정렬 order by
풀이방법
더보기
-- 방법1
SELECT date_format(datetime, '%H') as 'HOUR',
count(animal_id) as 'COUNT'
from animal_outs
where date_format(datetime, '%H') between 09 and 19
group by 1
order by 1
-- 방법2
SELECT HOUR(datetime) AS 'HOUR',
COUNT(animal_id) AS 'COUNT'
FROM animal_outs
WHERE HOUR(datetime) BETWEEN 9 AND 19
GROUP BY HOUR
ORDER BY HOUR;
-- 방법3
SELECT EXTRACT(HOUR FROM datetime) AS 'HOUR',
COUNT(animal_id) AS 'COUNT'
FROM animal_outs
WHERE EXTRACT(HOUR FROM datetime) BETWEEN 9 AND 19
GROUP BY HOUR
ORDER BY HOUR;
배운점
-- date_format함수
정의: 날짜, 시간을 지정된 형식으로 변환
공식: DATE_FORMAT(날짜열, '형식')
-- hour함수
정의: 시간정보에서 시간 부분만 추출
공식: HOUR(날짜열)
-- extract함수
정의: 날짜, 시간정보에서 특정 부분 추출
공식: EXTRACT(부분 FROM 날짜열)
'CodeKata > SQL' 카테고리의 다른 글
[MySQL] 12세 이하인 여자 환자 목록 출력하기_Lv.2 (1) | 2025.01.05 |
---|---|
[MySQL] 진료과별 총 예약 횟수 출력하기_Lv.2 (0) | 2025.01.05 |
[MySQL] 고양이와 개는 몇 마리 있을까_Lv.2 (0) | 2025.01.04 |
[MySQL] 카테고리 별 상품 개수 구하기_Lv.2 (0) | 2024.12.30 |
[MySQL] 중성화 여부 파악하기_Lv.2 (0) | 2024.12.29 |