https://school.programmers.co.kr/learn/courses/30/lessons/293260
코드설명
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
'SQL > 프로그래머스' 카테고리의 다른 글
[SQL][프로그래머스] 노선별 평균 역 사이 거리 조회하기 - GROUP BY + ROUND + CONCAT + ORDER BY MYSQL (0) | 2024.03.27 |
---|---|
[SQL][프로그래머스] 물고기 종류 별 잡은 수 구하기 - INNER JOIN + GROUP BY MYSQL (0) | 2024.03.26 |
[SQL][프로그래머스] 특정 물고기를 잡은 총 수 구하기 - INNER JOIN + IN MYSQL (0) | 2024.03.26 |
[SQL][프로그래머스] 이름이 없는 동물의 아이디 - IS NULL MYSQL (0) | 2024.03.25 |
[SQL][프로그래머스] 이름이 있는 동물의 아이디 - IS NULL MYSQL (0) | 2024.03.25 |