๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ“ ์•Œ๊ณ ๋ฆฌ์ฆ˜/Programmers - SQL

[MySQL/PGS] Lv.2 : ์—ฐ๋„๋ณ„ ๋Œ€์žฅ๊ท  ํฌ๊ธฐ์˜ ํŽธ์ฐจ ๊ตฌํ•˜๊ธฐ ๐ŸชŸ

by xxilliant 2025. 5. 7.
728x90
๋ฐ˜์‘ํ˜•

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;
728x90
๋ฐ˜์‘ํ˜•