개발로그필름

[SQL] 분기별 분화된 대장균의 개체 수 구하기 본문

coding test/프로그래머스

[SQL] 분기별 분화된 대장균의 개체 수 구하기

yuullog 2025. 6. 11. 17:41
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
Comments