[프로그래머스] 입양 시각 구하기(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
        • 데이터베이스
        • 운영체제
      • 일상
        • 독서
  • 블로그 메뉴

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

  • 공지사항

  • 인기 글

  • 태그

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

  • 최근 글

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

티스토리툴바