프로그래머스 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
;
'sql' 카테고리의 다른 글
mysql - 프로그래머스 131123 / 즐겨찾기가 가장 많은 식당 정보 출력하기 (0) | 2024.10.02 |
---|---|
mysql - 프로그래머스 59411 / 오랜 기간 보호한 동물(2) (0) | 2024.09.07 |
mysql - 프로그래머스 131537 / 오프라인/온라인 판매 데이터 통합하기 (0) | 2024.09.02 |
mysql - 프로그래머스 299308 / 분기별 분화된 대장균의 개체 수 구하기 (0) | 2024.08.20 |
mysql - 프로그래머스 298518 / 특정 물고기를 잡은 총 수 구하기 (2) | 2024.08.19 |