sql
프로그래머스 299310 / 연도별 대장균 크기의 편차 구하기
kdozlo
2024. 8. 22. 12:09
프로그래머스 299310 / 연도별 대장균 크기의 편차 구하기
lv2
구현 방법
2가지 방법으로 풀었습니다.
- 서브 쿼리,left join 방법
- over, partition by 방법
배운 점
윈도우 함수
- 레코드 간의 연산을 처리하기 위한 함수
- 참고 : 집계함수 - 칼럼 단위 연산 처리(그룹화)
- over : 윈도우 함수를 정의할 때 사용하는 구문, 함수가 적용될 데이터의 범위를 지정
- partiton by : 특정 컬럼의 값에 따라 그룹으로 나누는 데 사용됩니다.
SQL 쿼리의 실행 순서
- FROM, JOIN: 테이블과 조인을 결합.
- WHERE: 조건을 만족하는 행을 필터링.
- GROUP BY: 그룹화.
- HAVING: 그룹화된 데이터에 조건을 적용.
- SELECT: 필요한 컬럼을 선택하고 별칭을 적용.
- ORDER BY: 최종 결과 정렬.
- 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
;