sql

프로그래머스 299310 / 연도별 대장균 크기의 편차 구하기

kdozlo 2024. 8. 22. 12:09

프로그래머스 299310 / 연도별 대장균 크기의 편차 구하기
lv2

구현 방법

2가지 방법으로 풀었습니다.

  1. 서브 쿼리,left join 방법
  2. over, partition by 방법

배운 점

윈도우 함수

  • 레코드 간의 연산을 처리하기 위한 함수
  • 참고 : 집계함수 - 칼럼 단위 연산 처리(그룹화)
  1. over : 윈도우 함수를 정의할 때 사용하는 구문, 함수가 적용될 데이터의 범위를 지정
  2. partiton by : 특정 컬럼의 값에 따라 그룹으로 나누는 데 사용됩니다.

SQL 쿼리의 실행 순서

  1. FROM, JOIN: 테이블과 조인을 결합.
  2. WHERE: 조건을 만족하는 행을 필터링.
  3. GROUP BY: 그룹화.
  4. HAVING: 그룹화된 데이터에 조건을 적용.
  5. SELECT: 필요한 컬럼을 선택하고 별칭을 적용.
  6. ORDER BY: 최종 결과 정렬.
  7. LIMIT

코드

-- 서브 쿼리,left join 방법
select
    year(DIFFERENTIATION_DATE) as 'year',
    e2.year_dev - e1.size_of_colony as 'year_dev',
    id
from
    ECOLI_DATA e1
join
    (
        select
            max(size_of_colony) as 'year_dev',
            year(DIFFERENTIATION_DATE) as 'year'
        from
            ECOLI_DATA
        group by year
    ) as e2
on
    year(e1.DIFFERENTIATION_DATE) = e2.year
order by
    year,
    year_dev
;

-- over, partition by 방법
select
    year(DIFFERENTIATION_DATE) as 'year',
    (max(SIZE_OF_COLONY) OVER (PARTITION BY YEAR(DIFFERENTIATION_DATE)) - SIZE_OF_COLONY) as 'year_dev',
    ID
from
    ECOLI_DATA
order by
    year,
    year_dev
;