[프로그래머스] 월별 잡은 물고기 수 구하기

yannie·2024년 9월 24일
0

[문제]

월별 잡은 물고기의 수와 월을 출력하는 SQL문을 작성해주세요.

잡은 물고기 수 컬럼명은 FISH_COUNT, 월 컬럼명은 MONTH로 해주세요.
결과는 월을 기준으로 오름차순 정렬해주세요.
단, 월은 숫자형태 (1~12) 로 출력하며 9 이하의 숫자는 두 자리로 출력하지 않습니다. 잡은 물고기가 없는 월은 출력하지 않습니다.

[내가 푼 풀이(정답)]

-- 월별 잡은 물고기 수, 월
-- 월은 숫자형태 9이하의 숫자는 한 자리로 출력
-- 물고기를 잡지 않은 달은 출력 X
SELECT
    COUNT(ID) AS FISH_COUNT,
    MONTH(TIME) AS MONTH
FROM FISH_INFO
WHERE TIME IS NOT NULL
GROUP BY MONTH(TIME)
ORDER BY MONTH
;

[코드리뷰]

  • ~~별 = GROUP BY
  • 물고기를 잡지 않은 달은 출력하지 않으니 WHERE절에 IS NOT NULL을 사용하여 NULL이 아닌 것만 출력하도록 하였다.
  • MONTH()함수를 사용하여 날짜데이터에서 월만 추출하였다.

  • MONTH()함수는 날짜 값에서 월을 숫자 형식(1~12)으로 추출한다.
    - 기본적으로 한 자리 숫자는 한 자리로, 두 자리 숫자는 두 자리로 반환함
    -> 그래서 딱히 내가 반신반의한 조건은 신경쓰지 않아도 됐었다.
  • WHERE TIME IS NOT NULL은 없어도 되는 코드였다.
    - GROUP BY는 해당 월에 데이터가 없으면 결과에서 제외하기 때문에
    물고기를 잡지 않은 달은 자동으로 출력되지 않는다.

기억해!

솔직히..반신반의하면서 코드실행을 했다....
왜 반신반의 했냐면,,
문제에서 "단, 월은 숫자형태(1~12)로 출력하며 9이하의 숫자는 두 자리로 출력하지 않습니다."라는 조건을 보고
FISH_INFO의 TIME컬럼의 데이터를 살펴보니 2021/03/07로 되어있어서
어떻게 출력해야할까 라는 고민을 하다가 잘 모르겠어서 그냥 실행시켰더니 통과라고 떴다;;;;;

...언젠가 확신을 가지고 코드를 실행할 수 있길👀

0개의 댓글