Algorithm/SQL

[알고리즘] 입양 시각 구하기(2) 문제 해결 팁

y0ngha 2021. 10. 29. 23:29

프로그래머스에서 MySQL 문제중, Level 4를 보던 중 아래 문제가 나왔다.

https://programmers.co.kr/learn/courses/30/lessons/59413

 

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

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

programmers.co.kr

 

위 문제에서 구하고자 하는건 간단히 하면, 시간별 입양 횟수를 구하라는 내용이다.

시간별로 총 횟수를 구해야 하니 GROUP BY를 써야한다.

 

이 문제를 해결할 때 처음 직면하는 문제는, 아래 2가지 정도 있던 것 같다.

1. 특정 시간대에 횟수가 0회라면 어떻게 표현해야 할 지 ?

→ GROUP BY를 하게 되면 테이블에 있는 정보만 표시가 되는데, 없는 정보를 표시하라 하니 이 부분에서 조금 해맸다.

2. DATE_FORMAT을 이용해서 DATETIME을 시간 형식으로 바꾸게 될 경우 두자릿수로 나오게 되는데 어떻게 해야 할 지 ?

→ 사실 이거는 크게 문제 되지 않았다. DATE_FORMAT을 구해온 후 10 이상일 경우 SUBSTR 함수를 이용해 짜르려고 했으니.

 

먼저 해결하는 방법에 대한 팁을 알려주자면, 가상의 테이블을 생성한 후 두개의 테이블을 서로 JOIN 한 후 GROUP BY 하면 된다.

WITH RECURSIVE에 대해 알고 있으면 쉽게 풀 수 있는 문제였다.

(프로그래머스 MySQL 문제중 Level 4에선 이게 제일 복잡하지 않았나 싶다.)