문제 링크
https://school.programmers.co.kr/learn/courses/30/lessons/299308
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
풀이
푸는데 어렵진 않다고 느꼈고, 풀긴 풀었다!
하지만, 조회를 두번하는점에서 쿼리 실행시간이 비효율적일 것 같다.
다른 코드들 보니까 효율적으로 하더라,,
코드
-- 각 분기별 분화된 대장균의 총 수
SELECT SUB.QUARTER, COUNT(E.ID) AS ECOLI_COUNT
FROM ECOLI_DATA AS E
JOIN (
SELECT ID,
CASE
WHEN MONTH(DIFFERENTIATION_DATE) <= 3 THEN '1Q'
WHEN MONTH(DIFFERENTIATION_DATE) <= 6 THEN '2Q'
WHEN MONTH(DIFFERENTIATION_DATE) <= 9 THEN '3Q'
WHEN MONTH(DIFFERENTIATION_DATE) <= 12 THEN '4Q'
END AS QUARTER
FROM ECOLI_DATA
) AS SUB
ON E.ID = SUB.ID
GROUP BY SUB.QUARTER
ORDER BY QUARTER;
이런 훌륭한 풀이가 있다니..
-- 각 분기별 분화된 대장균의 총 수
SELECT
CONCAT(QUARTER(DIFFERENTIATION_DATE), 'Q') AS QUARTER,
COUNT(ID) AS ECOLI_COUNT
FROM ECOLI_DATA
GROUP BY QUARTER
ORDER BY QUARTER;
CONCAT(CEIL(MONTH(DIFFERENTIATION_DATE) / 3), 'Q') QUARTER
이렇게 해도 분기처리된다!
'알고리즘 > SQL' 카테고리의 다른 글
[PROG] LV3 대장균들의 자식의 수 구하기 (MySQL) (0) | 2024.10.17 |
---|---|
[PROG] LV3 대장균의 크기에 따라 분류하기 1 (MySQL) (0) | 2024.10.17 |
[PROG] LV2 연도별 대장균 크기의 편차 구하기 (MySQL) (0) | 2024.10.17 |
[PROG] LV1 특정 형질을 가지는 대장균 찾기 (MySQL) (0) | 2024.10.17 |
[PROG] LV2 부모의 형질을 모두 가지는 대장균 찾기 (MySQL) (0) | 2024.10.17 |