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

2022. 2. 15. 03:34·공부/코딩테스트 | 알고리즘

 

 

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

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

programmers.co.kr

 

프로그래머스 코딩테스트 SQL 문제를 풀며 정리하는 내용입니다.

 

환경은 MySQL로 설정했습니다 😃

 

 

문제 및 결과 예시


문제
결과

 

 

풀이 과정


 

SELECT  HOUR(DATETIME) AS HOUR
        , COUNT(*) AS COUNT
FROM    ANIMAL_OUTS
WHERE   HOUR(DATETIME) BETWEEN 0 AND 23
GROUP BY HOUR(DATETIME)
ORDER BY HOUR(DATETIME);

처음에는 이렇게 작성을 하고 결과를 확인하였더니..

 

프로그래머스에서 제공해준 결과 예시에는 COUNT 수가 0개인 항목들도 출력이 되어야 하는데

위의 쿼리로는 0개의 항목들은 나오지 않았다.

 

구글링을 한 결과 SET을 사용하면 된다는 답변을 얻었고 내 쿼리를 수정하였다.

 

 

1. 일단 SET을 통해서 변수를 선언해주고 0부터 23까지 출력되도록 만들었다.

SET @HOUR = -1;

SELECT  (@HOUR := @HOUR + 1) AS HOUR
FROM    ANIMAL_OUTS
WHERE   @HOUR < 23;

 

2. 선언한 HOUR 변수의 값과 기존 내가 작성한 쿼리를 JOIN을 걸어 시간을 매핑시켜주었다.

SET @HOUR = -1;

SELECT  (@HOUR := @HOUR + 1) AS HOUR
        , IFNULL(B.COUNT, 0) AS COUNT
FROM    ANIMAL_OUTS A
        LEFT OUTER JOIN (
            SELECT  HOUR(DATETIME) AS HOUR
                    , COUNT(*) AS COUNT
            FROM    ANIMAL_OUTS
            WHERE   HOUR(DATETIME) BETWEEN 0 AND 23
            GROUP BY HOUR(DATETIME)
            ORDER BY HOUR(DATETIME)
        ) B ON @HOUR + 1 = B.HOUR
WHERE   @HOUR < 23;

 

 


저도 많이 부족한 실력이기에 위의 쿼리가 당연히 정답은 아닙니다 😀 !

피드백 주시면 감사히 받겠습니다 🙌

'공부 > 코딩테스트 | 알고리즘' 카테고리의 다른 글

[LeetCode] Maximum Depth of Binary Tree  (0) 2025.02.27
[LeetCode] Min Stack  (0) 2025.02.26
[LeetCode] House Robber  (0) 2025.02.25
[LeetCode] Maximum Subarray  (0) 2025.02.24
[LeetCode] Climbing Stairs  (0) 2025.02.24
'공부/코딩테스트 | 알고리즘' 카테고리의 다른 글
  • [LeetCode] Min Stack
  • [LeetCode] House Robber
  • [LeetCode] Maximum Subarray
  • [LeetCode] Climbing Stairs
나는 유찌
나는 유찌
쩌리쨩
  • 나는 유찌
    유찌 개발 일기
    나는 유찌
  • 전체
    오늘
    어제
    • 분류 전체보기
      • 사이드 프로젝트
        • 게시판
        • 블로그(Spring boot + React.js ..
      • 데이터베이스
        • SQLD
      • 이슈 해결
      • Front
        • Javascript
        • Vue.js
        • HTML+CSS
      • Backend
        • Spring
        • ORM
        • JAVA
      • 공부
        • HTTP
        • OOP
        • 이것저것
        • 코딩테스트 | 알고리즘
      • Computer Science
        • Computer architecture
        • 데이터베이스
        • 운영체제
      • 일상
        • 독서
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    DIRTY READ
    pessimisticlock
    추리소설
    LeetCode
    독서
    Kotlin AntPathMatcher
    Spring Security AccessDecisionManager
    phantom read
    Spring Boot
    JWT이란?
    mysql 격리수준
    웹 개발
    access token
    AntPathMatcher
    히가시노 게이고
    jwt 로그인 구현
    redis 분산락
    mssql
    AccessDecisionVoter
    jwt
    권한 scope 처리
    refresh token
    spring 격리수준
    spring
    Access token 재발급
    한국소설
    Spring boot에서 JWT 구현
    role scope
    Access Token Refresh Token
    Kotlin AccessDecisionManager
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
나는 유찌
[프로그래머스] 입양 시각 구하기(2)
상단으로

티스토리툴바