Banner

My Tech Blog (๋Œ€์žฅ๊ท )

์˜ค๋Š˜์˜ ๋ช…์–ธ
1. ๋ฌธ์ œ ์„ค๋ช…2. ์ ‘๊ทผ๋ฐฉ์‹ECOLI_DATA๋Š” ๋ถ€๋ชจ-์ž์‹๊ฐ„์˜ ๊ณ„์ธต ๊ด€๊ณ„๋ฅผ ์ด๋ฃจ๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ ์„ธ๋Œ€๋ณ„๋กœ ์ž์‹์ด ์—†๋Š” ๊ฐœ์ฒด์˜ ์ˆ˜๋ฅผ ์ถœ๋ ฅํ•˜๋ ค๋ฉด ์žฌ๊ท€ CTE๋ฅผ ์‚ฌ์šฉํ•ด์„œ ๋Œ€์žฅ๊ท ์˜ ์„ธ๋Œ€generation)๋ฅผ ๊ณ„์‚ฐํ•ด ์ฃผ์–ด์•ผ ํ•œ๋‹ค. WITH RECURSIVE ๋ธ”๋ก์„ ๋จผ์ € ์ง€์ • ํ•ด ์ฃผ๊ณ , ๋ธ”๋ก ๋ฐ”๊นฅ์—์„œ ์„ธ๋Œ€๋ณ„๋กœ ์ž์‹์ด ์—†๋Š” ๊ฐœ์ฒด์ˆ˜๋ฅผ ์กฐํšŒํ•˜๋Š” ์ฟผ๋ฆฌ๋ฅผ ์งœ ์ฃผ๋ฉด ๋œ๋‹ค. WITH RECURSIVE ๋ธ”๋ก์€ ๋˜ ๋‘ ๋ถ€๋ถ„์œผ๋กœ ๋‚˜๋‰˜๋Š”๋ฐ, ๋จผ์ €, PARENT_ID IS NULL์ธ ์กฐ๊ฑด์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์กฐํšŒํ•ด์„œ 1์„ธ๋Œ€(AS GENERATION)๋ฅผ ๊ทœ์ • ํ•ด ์ค€๋‹ค. ๋‘ ๋ฒˆ์งธ๋กœ ํ•  ์ผ์€, ์ด 1์„ธ๋Œ€ ์ปฌ๋Ÿผ์„ ๊ธฐ์ค€์œผ๋กœ +1์„ ํ•ด์„œ ๊ณ„์ธต ๊ตฌ์กฐ๋ฅผ ์กฐํšŒ ํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ์ฆ‰, ๋ถ€๋ชจ ๊ฐœ์ฒด๋กœ๋ถ€ํ„ฐ ์ž์‹์˜ ์„ธ๋Œ€ ์ˆ˜๋ฅผ ๊ณ„์‚ฐ ํ•ด ์ฃผ๋Š” ๊ฒƒ์ด๋‹ค. Generation ..
๋‚œ์ด๋„ 3์ด๋ผ ์–ด๋ ค์šธ ์ค„ ์•Œ์•˜๋Š”๋ฐ ๋„ˆ๋ฌด ์‰ฌ์›Œ์„œ ๊ทธ๋ƒฅ ์ฝ”๋“œ๋งŒ ํฌ์ŠคํŒ…ํ•ฉ๋‹ˆ๋‹ค. ๋Œ€์žฅ๊ท ์˜ ํฌ๊ธฐ์— ๋”ฐ๋ผ ๋ถ„๋ฅ˜ํ•˜๊ธฐ 1 ์ •๋‹ต์ฝ”๋“œSELECT ID, SIZEFROM ( SELECT ID, CASE WHEN SIZE_OF_COLONY > 1000 THEN 'HIGH' WHEN SIZE_OF_COLONY ๋Œ€์žฅ๊ท ์˜ ํฌ๊ธฐ์— ๋”ฐ๋ผ ๋ถ„๋ฅ˜ํ•˜๊ธฐ 2 ๋ฌธ์ œ๋Œ€์žฅ๊ท  ๊ฐœ์ฒด์˜ ํฌ๊ธฐ๋ฅผ ๋‚ด๋ฆผ์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌํ–ˆ์„ ๋•Œ ์ƒ์œ„ 0% ~ 25% ๋ฅผ 'CRITICAL', 26% ~ 50% ๋ฅผ 'HIGH', 51% ~ 75% ๋ฅผ 'MEDIUM', 76% ~ 100% ๋ฅผ 'LOW' ๋ผ๊ณ  ๋ถ„๋ฅ˜ํ•ฉ๋‹ˆ๋‹ค. ๋Œ€์žฅ๊ท  ๊ฐœ์ฒด์˜ ID(ID) ์™€ ๋ถ„๋ฅ˜๋œ ์ด๋ฆ„(COLONY_NAME)์„ ์ถœ๋ ฅํ•˜๋Š” SQL ๋ฌธ์„ ์ž‘์„ฑํ•ด์ฃผ์„ธ์š”. ์ด๋•Œ ๊ฒฐ๊ณผ๋Š” ๊ฐœ์ฒด์˜ ID ์— ๋Œ€ํ•ด ์˜ค๋ฆ„..
1. ๋ฌธ์ œ์„ค๋ช… 2. ์ ‘๊ทผ๋ฐฉ์‹์ด๋ ‡๊ฒŒ ๊นŒ์ง€ ์˜ค๋ž˜ ๋ถ™์žก๊ณ  ์žˆ์„ ๋ฌธ์ œ๊ฐ€ ์•„๋‹Œ๋ฐ ์˜ค๋Š˜์€ ํ•˜๊ธฐ ์‹ซ์–ด์„œ ใ…‹ใ…‹ใ…‹...๊ฒŒ์œผ๋ฆ„ ์ข€ ํ”ผ์›Œ๋ดค๋‹ค. ์ฒ˜์Œ์—๋Š” ECOLI_DATA ํ…Œ์ด๋ธ” ๋‚ด์—์„œ PARENT_ID(๋ถ€๋ชจ)๊ฐ€ ์žˆ๋Š” ๋ฐ์ดํ„ฐ๋“ค์˜ ID๊ฐ’์„ ์นด์šดํŠธ ํ•ด ์ฃผ๋ฉด ๋˜๋Š”๊ฑฐ๋‹ค ๋ผ๊ณ  ์ƒ๊ฐ ํ•ด์„œ ํ‹€๋ ธ๋‹ค. ๊ฒฐ๊ณผ์ฐฝ์„ ๋ณด๋‹ˆ ์ž์‹์ด ์žˆ๋Š” ๋ถ€๋ชจ๋“ค๋งŒ ์ถœ๋ ฅ์ด ๋˜๊ณ  ์ž์‹์ด ์—†๋Š” ๋ถ€๋ชจ๋“ค์˜ ID๊ฐ’์€ ์กฐํšŒ๊ฐ€ ๋˜์ง€ ์•Š์•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.  ๊ทธ๋ž˜์„œ LEFT JOIN์„ ํ•ด ์ฃผ์–ด์•ผ ๊ฒ ๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ๋‹ค.์ฝ”๋“œ๋ฅผ ์ด๋ ‡๊ฒŒ ๊ณ ์ณค๋Š”๋ฐ ์ด๋ ‡๊ฒŒ ํ–ˆ๋Š”๋ฐ๋„ ๊ฒฐ๊ณผ๋Š” ๊ฐ™๋‹ค.์ด๋ ‡๊ฒŒ ๊ณ ์น˜๋ฉด์„œ ๋ถ€๋ชจ ํ…Œ์ด๋ธ”์ด ID ๊ฐ’์„ ID๋กœ SELECTํ•˜๊ณ , ์ž์‹ ํ…Œ์ด๋ธ”์˜ PARENT_ID๋ฅผ ์นด์šดํŒ… ํ•ด ์ฃผ์—ˆ๋‹ค. ํ‹€๋ฆฐ ์ด์œ ๋Š” WHERE ์ ˆ ๋•Œ๋ฌธ์ด์—ˆ๋‹ค.์ž์‹์ด ์—†๋Š” ๋ถ€๋ชจ๋„ ์นด์šดํŒ…์„ ํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์—WHERE E.PARENT..
1. ๋ฌธ์ œ ์„ค๋ช…๋ฌธ์ œ๋ถ„ํ™”๋œ ์—ฐ๋„(YEAR), ๋ถ„ํ™”๋œ ์—ฐ๋„๋ณ„ ๋Œ€์žฅ๊ท  ํฌ๊ธฐ์˜ ํŽธ์ฐจ(YEAR_DEV), ๋Œ€์žฅ๊ท  ๊ฐœ์ฒด์˜ ID(ID) ๋ฅผ ์ถœ๋ ฅํ•˜๋Š” SQL ๋ฌธ์„ ์ž‘์„ฑํ•ด์ฃผ์„ธ์š”. ๋ถ„ํ™”๋œ ์—ฐ๋„๋ณ„ ๋Œ€์žฅ๊ท  ํฌ๊ธฐ์˜ ํŽธ์ฐจ๋Š” ๋ถ„ํ™”๋œ ์—ฐ๋„๋ณ„ ๊ฐ€์žฅ ํฐ ๋Œ€์žฅ๊ท ์˜ ํฌ๊ธฐ - ๊ฐ ๋Œ€์žฅ๊ท ์˜ ํฌ๊ธฐ๋กœ ๊ตฌํ•˜๋ฉฐ ๊ฒฐ๊ณผ๋Š” ์—ฐ๋„์— ๋Œ€ํ•ด ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌํ•˜๊ณ  ๊ฐ™์€ ์—ฐ๋„์— ๋Œ€ํ•ด์„œ๋Š” ๋Œ€์žฅ๊ท  ํฌ๊ธฐ์˜ ํŽธ์ฐจ์— ๋Œ€ํ•ด ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌํ•ด์ฃผ์„ธ์š”.2. ์ ‘๊ทผ๋ฐฉ๋ฒ• ๊ฐ€์žฅ ํฐ ๋Œ€์žฅ๊ท ์˜ ํฌ๊ธฐ๋ฅผ ๊ตฌํ•ด์ค˜์•ผ ํ•˜๋ฏ€๋กœ MAX(SIZE_OF_COLONY)๋ฅผ ํ•ด ์ค˜์•ผ ํ•  ๊ฒƒ ๊ฐ™๊ณ  ์—ฐ๋„๋ณ„๋กœ ๊ตฌํ•ด์•ผ ํ•˜๋‹ˆ๊นŒ ์œˆ๋„์šฐ ํ•จ์ˆ˜์จ ์ค˜์„œ ์—ฐ๋„๋กœ ํŒŒํ‹ฐ์…”๋‹ ํ•ด ์ฃผ์–ด์•ผ ํ•œ๋‹ค. ์ผ๋‹จ ์ด ์ž‘์—…์„ ๋จผ์ € ํ•œ ํ›„์— ํ•ด๋‹น ๊ฒฐ๊ณผ๋ฅผ ๊ฐ€์ง€๊ณ  ๋‹ค์‹œ ๋ฐ์ดํ„ฐ๋ฅผ ์ถ”์ถœ ํ•ด ์ฃผ๊ณ  ORDER BY ์ •๋ ฌ์„ ํ•ด ์ฃผ์–ด์•ผ ๊ฒ ๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ๋‹ค.  ๋จผ์ €, ..
๋„ˆ๋ฌด ์‰ฌ์›Œ์„œ ๊ตณ์ด ๋ธ”๋กœ๊ทธ์— ์•ˆ ์˜ฌ๋ฆฌ๋ ค๋‹ค๊ฐ€ ์ฝ”๋“œ๋งŒ ์˜ฌ๋ฆฝ๋‹ˆ๋‹ค.ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค > ์ฝ”๋”ฉํ…Œ์ŠคํŠธ ์—ฐ์Šต > SLQ > `SUM, MAX, MIN`์นดํ…Œ๊ณ ๋ฆฌ์— ์žˆ๋Š” ๋ฌธ์ œ๋“ค์ž…๋‹ˆ๋‹ค. ๊ทธ๋ƒฅ ํ•œ ๋ˆˆ์— ๋ณด๊ณ  ๋ฐ”๋กœ ํ’€ ์ˆ˜ ์žˆ๋Š” 5์ดˆ์ปท ๋ฌธ์ œ๋“ค์€ํ•œ ํฌ์ŠคํŒ… ๋‚ด์— ์—ฌ๋Ÿฌ ๊ฐœ ๋ฌถ์–ด์„œ ์˜ฌ๋ฆฌ๋Š” ๊ฒƒ์ด๋‹ˆ ๊ตฌ์ฒด์ ์ธ ์„ค๋ช…์ด ํ•„์š”ํ•˜์‹œ๊ฑฐ๋‚˜ ๊ถ๊ธˆํ•œ ์ ์€ ๋Œ“๊ธ€๋กœ ๋ถ€ํƒ๋“œ๋ฆฝ๋‹ˆ๋‹ค.ํ™•์ธํ•˜๋Š” ๋Œ€๋กœ ๋‹ต ๋“œ๋ฆฝ๋‹ˆ๋‹ค. 1. ๊ฐ€์žฅ ๋น„์‹ผ ์ƒํ’ˆ ๊ตฌํ•˜๊ธฐ MAX()SELECT MAX(PRICE) AS MAX_PRICEFROM PRODUCT ํ’€์–ด์„œ ์“ฐ๋Š” ์ฝ”๋“œSELECT PRICE AS MAX_PRICEFROM PRODUCTORDER BY PRICE DESCLIMIT 1;2. ์ตœ๋Œ“๊ฐ’ ๊ตฌํ•˜๊ธฐ SELECT MAX(DATETIME)FROM ANIMAL_INS;3. ์žก์€ ๋ฌผ๊ณ ๊ธฐ ์ค‘ ๊ฐ€์žฅ ํฐ ๋ฌผ๊ณ ..
1. ๋ฌธ์ œ์„ค๋ช… 2. ์ ‘๊ทผ ๋ฐฉ๋ฒ• & ์ •๋‹ต์ฝ”๋“œ`GENOTYPE`์„ ์ด์ง„์ˆ˜๋กœ ๋ณ€ํ™˜ํ•œ ๊ฐ’์˜ `๊ฐ ์ž๋ฆฟ์ˆ˜`๊ฐ€ `๋ณด์œ ํ•œ ํ˜•์งˆ`์„ ๋‚˜ํƒ€๋‚ด๋ฏ€๋กœ๋น„ํŠธ์—ฐ์‚ฐ์„ ํ•ด ์ฃผ์–ด์•ผ ํ•˜๋Š” ๋ฌธ์ œ๋ผ๋Š” ๊ฑธ ์•Œ ์ˆ˜ ์žˆ๋‹ค !  SELECT COUNT(*) AS COUNTFROM ECOLI_DATA AWHERE 1=1      AND (GENOTYPE & 2) != 2       AND ((GENOTYPE & 4) = 4 OR (GENOTYPE & 1) = 1) ์ด ๋ฌธ์ œ๋Š” WHERE์ ˆ ์ž‘์„ฑํ•˜๊ธฐ๊ฐ€ ์กฐ๊ธˆ ์–ด๋ ค์šธ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ํ•˜๋‚˜์”ฉ ์ฐจ๊ทผ ์ฐจ๊ทผ ์„ค๋ช…์„ ํ•ด ๋ณด๊ฒ ๋‹ค. ๋จผ์ € ๋น„ํŠธ์—ฐ์‚ฐ์ด๋ž€ ๊ฑธ ๋ชจ๋ฅด๋ฉด ์ดํ•ด๊ฐ€ ์–ด๋ ค์šธ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋น„ํŠธ์—ฐ์‚ฐ ๋จผ์ € ์•Œ์•„๋ณด์ž.๋น„ํŠธ์—ฐ์‚ฐ์ด๋ž€?๋น„ํŠธ ์—ฐ์‚ฐ์€ ์ˆซ์ž๋ฅผ ์ด์ง„์ˆ˜ ํ˜•ํƒœ๋กœ ๋ณ€ํ™˜ํ•˜์—ฌ ๊ฐ ๋น„ํŠธ๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์—ฐ์‚ฐ์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ฐฉ์‹์ด๋‹ค. ํ”„๋กœ๊ทธ..
์ƒ๋‹จ์œผ๋กœ