노아

[프로그래머스] 분기별 분화된 대장균의 개체 수 구하기 본문

알고리즘/SQL

[프로그래머스] 분기별 분화된 대장균의 개체 수 구하기

Noaahhh 2024. 9. 19. 14:54

 

Question

 

각 분기(QUARTER)별 분화된 대장균의 개체의 총 수(ECOLI_COUNT)를 출력하는 SQL 문을 작성해주세요. 이때 각 분기에는 'Q' 를 붙이고 분기에 대해 오름차순으로 정렬해주세요. 대장균 개체가 분화되지 않은 분기는 없습니다.

 

 

Pseudocode

 

 

  1. 테이블 정의:
    • ECOLI_DATA: 대장균 개체의 정보를 담고 있는 테이블.
  2. 분기 계산:
    • DIFFERENTIATION_DATE의 월을 기준으로 해당 개체가 속한 분기를 계산합니다.
    • MONTH(DIFFERENTIATION_DATE)를 사용하여 월을 추출합니다.
    • (MONTH(DIFFERENTIATION_DATE) - 1) / 3를 사용하여 분기를 계산합니다.
      • 월을 1에서 12까지 나눈 후 3으로 나누어 분기를 결정합니다.
      • TRUNCATE(..., 0)을 사용하여 소수점을 버립니다.
      • + 1을 통해 1부터 시작하는 분기를 만듭니다.
    • 'Q'를 결합하여 결과를 '1Q', '2Q', '3Q', '4Q' 형식으로 만듭니다.
  3. 집계:
    • 각 분기별로 개체 수를 계산합니다 (COUNT(*)).
  4. 정렬:
    • 결과를 분기(QUARTER) 기준으로 오름차순으로 정렬합니다.

 

 

 

Code

 

select concat(
    TRUNCATE((month(DIFFERENTIATION_DATE) - 1) / 3, 0) + 1, 
    'Q') QUARTER, count(*) ECOLI_COUNT
from ECOLI_DATA
group by QUARTER
order by QUARTER