📌 문제 정보
- 문제 이름 : 프로그래머스 - (String, Date) 분기별 분화된 대장균의 개체 수 구하기
- 문제 링크 : https://school.programmers.co.kr/learn/courses/30/lessons/299308
📌 문제 요약
- ECOLI_DATA 테이블 : ID(개체의 ID), PARENT_ID(부모 개체의 ID), SIZE_OF_COLONY(개체의 크기), DIFFERENTIATION_DATE(분화 되어 나온 날짜), GENOTYPE(개체의 형질)
- 각 분기(QUARTER)별 분화된 대장균의 개체의 총 수(ECOLI_COUNT)를 출력하는 SQL 문을 작성해주세요. 이때 각 분기에는 'Q' 를 붙이고 분기에 대해 오름차순으로 정렬해주세요. 대장균 개체가 분화되지 않은 분기는 없습니다.
예시)
| ID | PARENT_ID | SIZE_OF_COLONY | DIFFERENTIATION_DATE | GENOTYPE |
| 1 | NULL | 10 | 2019/01/01 | 5 |
| 2 | NULL | 2 | 2019/05/01 | 3 |
| 3 | 1 | 100 | 2020/01/01 | 4 |
| 4 | 2 | 17 | 2022/04/01 | 4 |
| 5 | 2 | 10 | 2020/09/01 | 6 |
| 6 | 4 | 101 | 2021/12/01 | 22 |
출력)
| QUARTER | ECOLI_COUNT |
| 1Q | 2 |
| 2Q | 2 |
| 3Q | 1 |
| 4Q | 1 |
📌 내 풀이 및 코드
SELECT
q AS QUARTER, -- 분기 숫자를 'QUARTER'라는 별칭으로 표시
COUNT(*) AS ECOLI_COUNT -- 해당 분기에 분화된 대장균 개수 세기
FROM (
SELECT
QUARTER(DIFFERENTIATION_DATE) AS q -- 날짜를 기반으로 분기(1~4) 추출
FROM ECOLI_DATA
) sub
GROUP BY q -- 분기별로 그룹핑
ORDER BY q; -- 분기 오름차순 정렬
- 서브쿼리 쓰는 방법 몰라서 틀림..
📌 새로 배운 문법
<-- 이번 문제에서 새로 배운 Java 문법 정리 -->
** QUARTER() **
- 날짜 함수(Date Function) : 날짜가 속한 분기 (1~4) 반환
** 서브쿼리 (Subquery / Derived Table) **
- FROM (...) sub 구조 : 내부 SELECT 결과를 임시 테이블(sub)처럼 쓰는 기법
'CODING TEST > MySQL' 카테고리의 다른 글
| Lv2 - 부모의 형질을 모두 가지는 대장균 찾기 (0) | 2025.08.01 |
|---|---|
| Lv2 - 연도별 대장균 크기의 편차 구하기 (0) | 2025.08.01 |
| Lv2 - 노션별 평균 역 사이 거리 조회하기 (0) | 2025.08.01 |
| Lv2 - 조건에 맞는 사원 정보 조회하기 (0) | 2025.08.01 |
| Lv2 - 조건에 맞는 개발자 찾기 (0) | 2025.07.30 |
