개발로그필름
[SQL] 분기별 분화된 대장균의 개체 수 구하기 본문
728x90
반응형
SMALL
반응형

https://school.programmers.co.kr/learn/courses/30/lessons/299308
프로그래머스
SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
구해야하는 것
- 분기별 대장균 개체 총 수 출력
- 각 분기에는 Q 붙이고 분기에 대해 오름차순 정렬
정답 쿼리
SELECT
CONCAT(
CASE
WHEN MONTH(DIFFERENTIATION_DATE) BETWEEN 1 AND 3 THEN '1'
WHEN MONTH(DIFFERENTIATION_DATE) BETWEEN 4 AND 6 THEN '2'
WHEN MONTH(DIFFERENTIATION_DATE) BETWEEN 7 AND 9 THEN '3'
WHEN MONTH(DIFFERENTIATION_DATE) BETWEEN 10 AND 12 THEN '4'
END
, 'Q') AS QUARTER,
COUNT(*) AS ECOLI_COUNT
FROM ECOLI_DATA
GROUP BY QUARTER
ORDER BY QUARTER ASC;
CONCAT()
- 여러 문자열을 하나로 합치는 함수
- 이름, 날짜, 코드 값 등을 조합해 새로운 표현을 만들 때 자주 사용
SELECT CONCAT('Hello', 'World'); -- 결과: HelloWorld
기본 문법
CONCAT(str1, str2, ..., strN)
SELECT CONCAT('Q', 2); -- Q2
SELECT CONCAT('2022', '_Q', '1'); -- 2022_Q1
CASE WHEN
- SQL에서는 프로그래밍 언어처럼 if, else를 직접 쓸 수 없다
- 조건에 따라 컬럼 값이나 계산 결과를 다르게 반환하고 싶을 때 CASE WHEN을 사용한다
CASE
WHEN 조건 THEN 결과
WHEN 조건 THEN 결과
...
ELSE 기본값
END
SELECT절, WHERE절, ORDER BY절 등 거의 모든 곳에 쓸 수 있다
기본 문법
SELECT
CASE
WHEN 조건1 THEN 반환값1
WHEN 조건2 THEN 반환값2
ELSE 기본값
END AS 별칭
FROM 테이블명;
예시 (숫자 -> 등급 구분)
SELECT
STUDENT_NAME,
SCORE,
CASE
WHEN SCORE >= 90 THEN 'A'
WHEN SCORE >= 80 THEN 'B'
WHEN SCORE >= 70 THEN 'C'
ELSE 'F'
END AS GRADE
FROM STUDENT;
반응형
LIST
'coding test > 프로그래머스' 카테고리의 다른 글
| [SQL] 특정 물고기를 잡은 총 수 구하기 (0) | 2025.06.12 |
|---|---|
| [SQL] 연도별 대장균 크기의 편차 구하기 (0) | 2025.06.12 |
| [SQL] 조건에 부합하는 중고거래 상태 조회하기 (0) | 2025.06.11 |
| [SQL] 자동차 평균 대여 기간 구하기 (2) | 2025.06.10 |
| [SQL] 가격대 별 상품 개수 구하기 (0) | 2025.06.09 |
Comments