[프로그래머스] 입양 시각 구하기(1) - MySQL

Kim Ji Eun·2022년 3월 7일
0

난이도

레벨 2

유형

GROUP BY

문제

https://programmers.co.kr/learn/courses/30/parts/17044

풀이

이 문제는 09:00부터 19:59까지, 각 시간대 별로 입양이 몇건 발생했는지 조회하는 SQL문을 작성해야하고 시간대 순으로 정렬해야한다.

출력 예시는 다음과 같다.

  1. DATETIME 컬럼을 사용해 풀면 되는데 테이블을 출력해보면 DATETIME은 "2014-06-28 13:40:00" 이 형식으로 되어있다. DATETIME을 시간으로 바꾸기 위해서는 HOUR 함수를 사용하면 된다.

    SELECT HOUR(DATETIME) AS HOUR, COUNT(DATETIME) AS COUNT

    COUNT 안 HOUR(DATETIME), DATETIME, * 모두 가능

  2. 09:00부터 19:59까지 출력하기 위해 WHERE 절을 적용한다.
    (WHERE 절엔 AS HOUR 값이 안먹는다.
    WHERE HOUR >= 9 AND HOUR <= 19 하면 오류)

    WHERE HOUR(DATETIME) >= 9 AND HOUR(DATETIME) <= 19

  3. 시간대별 갯수를 출력하기 위해 그룹함수를 사용한다.
    (AS HOUR이 적용됨)

    GROUP BY HOUR

  4. 시간대순으로 정렬하기 위해 ORDER BY를 사용한다.
    (AS HOUR이 적용됨)

    ORDER BY HOUR

코드

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

https://chanhuiseok.github.io/posts/db-6/

profile
Back-End Developer

1개의 댓글

comment-user-thumbnail
2022년 7월 8일

안녕하세요! sql 검색하다가 알고리즘 문제도 많이 푸신거 보고 댓글남깁니다.
질문할 것이 있어서요,

  1. 알고리즘 공부는 어떻게 하시나요?
  • 현재 저는 혼자 풀 수 있는 수준은 브론즈1-2 정도이며, inflearn 자바 알고리즘 강의를 듣고 DFS, BFS문제 보고 이해하려고 하고 있습니다. 문제는 혼자 문제를 풀려고 할때, 코드가 작성되지 않아서요.
    이 문제를 어떻게 해결할 수 있을까요?
  1. 백엔드 개발자가 되고 싶은데, 어떤 준비를 어떻게 해야하는지 궁금합니다.

뜬금없긴하지만.. 알고리즘 문제 푼것 보고 조언좀 구하고 싶어서 댓글 남깁니다.

답글 달기