๐ ์๊ณ ๋ฆฌ์ฆ/Programmers - SQL14 [MySQL/PGS] Lv.2 : ๋ถ๋ชจ์ ํ์ง์ ๋ชจ๋ ๊ฐ์ง๋ ๋์ฅ๊ท ์ฐพ๊ธฐ https://school.programmers.co.kr/learn/courses/30/lessons/301647 ํ๋ก๊ทธ๋๋จธ์คSW๊ฐ๋ฐ์๋ฅผ ์ํ ํ๊ฐ, ๊ต์ก, ์ฑ์ฉ๊น์ง Total Solution์ ์ ๊ณตํ๋ ๊ฐ๋ฐ์ ์ฑ์ฅ์ ์ํ ๋ฒ ์ด์ค์บ ํprogrammers.co.krํ๋ก๊ทธ๋๋จธ์ค ๋ ๋ฒจ 2.mysql, ๋นํธ ์ฐ์ฐ์ ์ฌ์ฉ ๋ฌธ์ (&, |) ์ฒ์์ ์ ํ๋ ค์ ํ์ด๋ฅผ ์ฐพ์๋ดค๋๋ฐ,, ๋นํธ์ฐ์ฐ์๋ฅผ ์ฐ๋ผ๋๊ฑฐ์?๊ทผ๋ฐ ์ ์ฐ๋๊ฑด์ง ์ดํด๊ฐ ์๋ผ์ ๊ณ ๋ฏผํ๋ค๊ฐ ๊ฒฐ๊ตญ ์ดํดํด๋ฒ๋ ธ๋ค *ใ *! ๊ทธ๋๊น๋ถ๋ชจ bit ๊ฐ 1์ด๋ฉด ์์์ด ํญ์ 1์ด์ด์ผ ํ๊ณ (1&1 = 1)๋ถ๋ชจ๊ฐ 0์ด๋ฉด, ์์์ 1์ด๋ 0์ด๋ ์๊ด์์ผ๋ (0&1 = 0, 0&0 = 0)๋ถ๋ชจ & ์์ ์ฐ์ฐ ๊ฒฐ๊ณผ๊ฐ => ๋ถ๋ชจ๊ฐ ๋๋ฉด, ์์์ ๋ถ๋ชจ์ ๋ชจ๋ 1์ ํฌํจํ๋ ๊ฒ์ด๋คโผ๏ธex.. 2025. 5. 7. [MySQL/PGS] Lv.2 : ์ฐ๋๋ณ ๋์ฅ๊ท ํฌ๊ธฐ์ ํธ์ฐจ ๊ตฌํ๊ธฐ ๐ช https://school.programmers.co.kr/learn/courses/30/lessons/299310 ํ๋ก๊ทธ๋๋จธ์คSW๊ฐ๋ฐ์๋ฅผ ์ํ ํ๊ฐ, ๊ต์ก, ์ฑ์ฉ๊น์ง Total Solution์ ์ ๊ณตํ๋ ๊ฐ๋ฐ์ ์ฑ์ฅ์ ์ํ ๋ฒ ์ด์ค์บ ํprogrammers.co.krํ๋ก๊ทธ๋๋จธ์ค ๋ ๋ฒจ 2.์ฒ์์๋ ์๋ธ์ฟผ๋ฆฌ๋ฅผ ํตํด์ ํ ์ด๋ธ 2๊ฐ๋ฅผ ์๋ก ์์ฑํ๊ณ , ์กฐ์ธ์ ํตํด ํด๊ฒฐํ๋ค. ๊ทผ๋ฐ ๋๋ฌด ๋นํจ์จ์ ์ธ ๊ฒ ๊ฐ์์ ๋ฐฉ๋ฒ์ ์ฐพ์๋ณด๋ '์๋์ฐ ํจ์'๋ผ๋ ๊ฑธ ์ฌ์ฉํ๋ฉด ๋๋ค๊ณ ํจ.๊ทธ๋์ MAX() OVER(PARTITION BY ...) ๋ฅผ ํ์ฉํ์ฌ ๋ค์ ํ์ด๋ณด์๋ค!์๋์ฐ ํจ์๋ฅผ ์ฌ์ฉํ๋ฉด ์ง๊ณ ํจ์๋ฅผ ํ๋ณ๋ก ๊ณ์ฐํ๋ฉด์๋ ๊ทธ๋ฃนํ๋ฅผ ์ ์งํ ์ ์๋ค๊ณ ํ๋ค. ๋์ฅ๊ท ์๋ฆฌ์ฆ ํ๋ฉด์ ์๋ก์ด ํจ์ ๋ง์ด ์์๊ฐ๋๋ค,, ๋์ ํ์ด (1)sel.. 2025. 5. 7. [MySQL/PGS] Lv.1 : ํน์ ํ์ง์ ๊ฐ์ง๋ ๋์ฅ๊ท ์ฐพ๊ธฐ ํ๋ก๊ทธ๋๋จธ์ค ๋ ๋ฒจ 1 (์ด๊ฒ ์....)mysql์ด์ง์ ๋ณํ์ ํ์ฉํด์ผ ํ๋ ๋ฌธ์ . ๋๋ BIN ํจ์๋ฅผ ์ด์ฉํด์ ํ์ดํ๋ค.BIN()์ ๋ฐํ๊ฐ์ด string์ด๊ธฐ ๋๋ฌธ์, substr๋ก ์ธ๋ฑ์ค ์ ๊ทผํ๋ฉด ๋จ๊ทผ๋ฐ ์ด๊ฒ๋ณด๋ค ๊ฐ๋จํ ํ์ด๊ฐ ๋ง์๋ค,,, ๋นํธ์ฐ์ฐ์ ํ์ฉ ํ์ด (select-from ์๋ต)WHERE GENOTYPE & 2 = 0 AND ( (GENOTYPE & 1) > 0 OR (GENOTYPE & 4) > 0 ); ๋์ ํ์ดselect count(*) as COUNTfrom ecoli_datawhere substr(bin(GENOTYPE),length(bin(GENOTYPE))-1,1) = 0 and (substr(bin(GENOTYPE),length(bin(GENOTYPE)),1.. 2025. 5. 7. [MySQL/PGS] Lv.3 : ๋์ฅ๊ท ์ ํฌ๊ธฐ์ ๋ฐ๋ผ ๋ถ๋ฅํ๊ธฐ 2 https://school.programmers.co.kr/learn/courses/30/lessons/301649 ํ๋ก๊ทธ๋๋จธ์คSW๊ฐ๋ฐ์๋ฅผ ์ํ ํ๊ฐ, ๊ต์ก, ์ฑ์ฉ๊น์ง Total Solution์ ์ ๊ณตํ๋ ๊ฐ๋ฐ์ ์ฑ์ฅ์ ์ํ ๋ฒ ์ด์ค์บ ํprogrammers.co.krํ๋ก๊ทธ๋๋จธ์ค ๋ ๋ฒจ 3 mysql ๋น์จ(๋ฐฑ๋ถ์)์ ๋ฐ๋ผ ๋ฑ๊ธ์ ๋๋๋ ์ฟผ๋ฆฌ๋NTILE() ๋๋ PERCENT_RANK() ๊ฐ์ ํจ์๋ก ๊ตฌํ์ด ๊ฐ๋ฅํ๋ค.์ด๋ฒ์ ์ฒ์ ์์๋๋ฐ..์ธ์๋์ ๐ฅน ๋ฑ๊ธ ๋๋๊ธฐ = case when then + ntile ์์ฉ!! ๋์ ํ์ดselect ID, CASE NTILE(4) OVER (order by SIZE_OF_COLONY desc) when 1 then 'CRITICAL' when 2 then 'H.. 2025. 5. 7. [MySQL/PGS] Lv.2 : ๋ถ๊ธฐ๋ณ ๋ถํ๋ ๋์ฅ๊ท ์ ๊ฐ์ฒด ์ ๊ตฌํ๊ธฐ https://school.programmers.co.kr/learn/courses/30/lessons/299308 ํ๋ก๊ทธ๋๋จธ์คSW๊ฐ๋ฐ์๋ฅผ ์ํ ํ๊ฐ, ๊ต์ก, ์ฑ์ฉ๊น์ง Total Solution์ ์ ๊ณตํ๋ ๊ฐ๋ฐ์ ์ฑ์ฅ์ ์ํ ๋ฒ ์ด์ค์บ ํprogrammers.co.krํ๋ก๊ทธ๋๋จธ์ค ๋ ๋ฒจ 2.๋ฌธ์์ด, ๋ ์งํ ๋ฌธ๋ฒ ์์ฉ ๋ฌธ์๋ฅผ ์ด์ด ๋ถ์ด๋ ค๋ฉด concat ํจ์ ์ฌ์ฉ,๋ ์ง์ ๋ถ๊ธฐ๋ฅผ ๊ตฌํ๋ ค๋ฉด quarter ํจ์ ์ฌ์ฉ!! ๋์ ํ์ดselect concat(QUARTER(DIFFERENTIATION_DATE),'Q') as QUARTER, count(*) as ECOLI_COUNTfrom ecoli_datagroup by QUARTERorder by QUARTER; 2025. 5. 7. [MySQL/PGS] Lv.4 : ํน์ ์ธ๋์ ๋์ฅ๊ท ์ฐพ๊ธฐ https://school.programmers.co.kr/learn/courses/30/lessons/301650 ํ๋ก๊ทธ๋๋จธ์คSW๊ฐ๋ฐ์๋ฅผ ์ํ ํ๊ฐ, ๊ต์ก, ์ฑ์ฉ๊น์ง Total Solution์ ์ ๊ณตํ๋ ๊ฐ๋ฐ์ ์ฑ์ฅ์ ์ํ ๋ฒ ์ด์ค์บ ํprogrammers.co.krํ๋ก๊ทธ๋๋จธ์ค ๋ ๋ฒจ 4.mysql ๋๋ ์ ์ผ ์ฌํํ๊ฒ.. ๋์ผ ํ ์ด๋ธ์ ์ฌ๋ฌ๊ฐ ์ ์ธํด์ ๊ฐ์ ๊ฒ์ฌํ๋ ๋ฐฉ๋ฒ์ผ๋ก ํด๊ฒฐํ๋ค.JOIN์ ๋ ๋ฒ ์ฌ์ฉํ๊ฑฐ๋, exists, in ๋ฑ์ ์ฌ์ฉํ๋ ๋ฑ ๋ค์ํ ํด๊ฒฐ ๋ฐฉ๋ฒ์ด ์๋ ๋ฏ ํ๋ค ๋์ ํ์ดselect a.id as IDfrom ecoli_data a, ecoli_data b, ecoli_data cwhere a.parent_id = b.id and b.parent_id = c.id and .. 2025. 5. 7. ์ด์ 1 2 3 ๋ค์ 728x90 ๋ฐ์ํ