https://school.programmers.co.kr/learn/courses/30/lessons/293260

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

코드설명

GROUP BY + MONTH + DATE_FORMAT  를 활용합니다.

 

MYSQL에서의 SQL h sql_mode=only_full_group_by 로 인하여 GROUP BY를 사용하는 SQL에서 데이터를 조회할때는 해당 컬럼이 GROUP BY 에 존재해야만 합니다.

 

또, 처음에는 DATE_FORMAT(TIME, '%m') 을 활용했는데, 그렇게 할경우 1월이 01로 나오면서 처리가 불가합니다.

MONTH를 사용합니다.

코드

-- 월을 숫자형태(1~12)로 출력하기 위해 MONTH 함수를 사용해야 한다.
SELECT COUNT(*) AS FISH_COUNT, MONTH(TIME) AS MONTH
FROM FISH_INFO
GROUP BY MONTH
ORDER BY MONTH ASC

 

SELECT COUNT(*) AS FISH_COUNT, MONTH(FI1.TIME) AS MONTH
FROM FISH_INFO AS FI1
GROUP BY MONTH(FI1.TIME)
ORDER BY MONTH(FI1.TIME) ASC;

 

SELECT COUNT(*) AS FISH_COUNT, MONTH(TIME) AS MONTH 
FROM FISH_INFO
GROUP BY MONTH(TIME) ORDER BY MONTH(TIME) ASC;

 

조금 더 간략하게 한 코드입니다.

SELECT COUNT(*) AS FISH_COUNT, MONTH(TIME) AS MONTH 
FROM FISH_INFO
GROUP BY MONTH ORDER BY MONTH ASC;

 

DATE_FORMAT를 활용하여 월이 잘못나오는 코드입니다.

SELECT COUNT(*), DATE_FORMAT(TIME, '%m') AS MONTH 
FROM FISH_INFO
GROUP BY MONTH ORDER BY MONTH ASC;
SELECT COUNT(*) AS FISH_COUNT, DATE_FORMAT(TIME, '%M') AS MONTH
FROM FISH_INFO
GROUP BY MONTH
ORDER BY MONTH ASC

 

+ Recent posts