https://school.programmers.co.kr/learn/courses/30/lessons/299310
ํ๋ก๊ทธ๋๋จธ์ค
SW๊ฐ๋ฐ์๋ฅผ ์ํ ํ๊ฐ, ๊ต์ก, ์ฑ์ฉ๊น์ง Total Solution์ ์ ๊ณตํ๋ ๊ฐ๋ฐ์ ์ฑ์ฅ์ ์ํ ๋ฒ ์ด์ค์บ ํ
programmers.co.kr
ํ๋ก๊ทธ๋๋จธ์ค ๋ ๋ฒจ 2.
์ฒ์์๋ ์๋ธ์ฟผ๋ฆฌ๋ฅผ ํตํด์ ํ ์ด๋ธ 2๊ฐ๋ฅผ ์๋ก ์์ฑํ๊ณ , ์กฐ์ธ์ ํตํด ํด๊ฒฐํ๋ค.
๊ทผ๋ฐ ๋๋ฌด ๋นํจ์จ์ ์ธ ๊ฒ ๊ฐ์์ ๋ฐฉ๋ฒ์ ์ฐพ์๋ณด๋ '์๋์ฐ ํจ์'๋ผ๋ ๊ฑธ ์ฌ์ฉํ๋ฉด ๋๋ค๊ณ ํจ.
๊ทธ๋์ MAX() OVER(PARTITION BY ...) ๋ฅผ ํ์ฉํ์ฌ ๋ค์ ํ์ด๋ณด์๋ค!
์๋์ฐ ํจ์๋ฅผ ์ฌ์ฉํ๋ฉด ์ง๊ณ ํจ์๋ฅผ ํ๋ณ๋ก ๊ณ์ฐํ๋ฉด์๋ ๊ทธ๋ฃนํ๋ฅผ ์ ์งํ ์ ์๋ค๊ณ ํ๋ค.
๋์ฅ๊ท ์๋ฆฌ์ฆ ํ๋ฉด์ ์๋ก์ด ํจ์ ๋ง์ด ์์๊ฐ๋๋ค,,
๋์ ํ์ด (1)
select a.YEAR as YEAR,
b.maxSize - a.SIZE_OF_COLONY as YEAR_DEV, a.ID
from (select ID, SIZE_OF_COLONY, year(DIFFERENTIATION_DATE) as YEAR
from ecoli_data) a,
(select year(DIFFERENTIATION_DATE) as YEAR,
max(SIZE_OF_COLONY) as maxSize
from ecoli_data
group by YEAR) b
where a.YEAR = b.YEAR
order by YEAR, YEAR_DEV;
๋์ ํ์ด (2)
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;