코딩테스트 연습 - 분기별 분화된 대장균의 개체 수 구하기
링크 : https://school.programmers.co.kr/learn/courses/30/lessons/299308
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
문제 설명
위와같은 테이블이 있을 때 날짜를 분기에 맞게 나눠서 집계하는 문제다 .
이처럼 만들면 성공
문제 풀이
구현 1 - DATE_FORMAT 사용
SELECT
CASE
WHEN DATE_FORMAT(DIFFERENTIATION_DATE,'%m%d')<DATE_FORMAT("19990401",'%m%d')
THEN '1Q'
WHEN DATE_FORMAT(DIFFERENTIATION_DATE,'%m%d')<DATE_FORMAT("19990701",'%m%d')
THEN '2Q'
WHEN DATE_FORMAT(DIFFERENTIATION_DATE,'%m%d')<DATE_FORMAT("19991001",'%m%d')
THEN '3Q'
ELSE '4Q'
END AS QUARTER,
COUNT(*) AS ECOLI_COUNT
FROM ECOLI_DATA
GROUP BY QUARTER
ORDER BY QUARTER
처음엔 월, 일만 뽑아와서 날짜형식으로 비교하는 방법을 사용했다.
구현 2 - MONTH 사용
SELECT
CASE
WHEN MONTH(DIFFERENTIATION_DATE) BETWEEN '1' AND '3'
THEN '1Q'
WHEN MONTH(DIFFERENTIATION_DATE) BETWEEN '4' AND '6'
THEN '2Q'
WHEN MONTH(DIFFERENTIATION_DATE) BETWEEN '7' AND '9'
THEN '3Q'
ELSE '4Q'
END AS QUARTER,
COUNT(*) AS ECOLI_COUNT
FROM ECOLI_DATA
GROUP BY QUARTER
ORDER BY QUARTER
찾아보니 월만 뽑아주는 함수 MONTH를 발견! 코드가 조금 더 간결해졌다.
구현 3 - QUARTER 사용
SELECT CONCAT(QUARTER(DIFFERENTIATION_DATE),'Q') AS QUARTER,
COUNT(*) AS ECOLI_COUNT
FROM ECOLI_DATA
GROUP BY QUARTER
ORDER BY QUARTER
아예 분기를 뽑아주는 QUARTER 발견... CONCAT으로 아예 "Q"까지 합쳐버렸다.
'공부 일지 > 문제풀이' 카테고리의 다른 글
[프로그래머스] 대장균의 크기에 따라 분류하기 2 (MySQL) (0) | 2024.11.28 |
---|---|
[프로그래머스] 연도별 대장균 크기의 편차 구하기 (MySQL) (0) | 2024.11.26 |
[프로그래머스] 자동차 대여 기록 별 대여 금액 구하기 (MySQL) (0) | 2024.11.24 |
[프로그래머스] 없어진 기록 찾기 (MySQL) (0) | 2023.12.04 |
[프로그래머스] 오프라인/온라인 판매 데이터 통합하기 (MySQL) (1) | 2023.11.22 |