๐ 1. ๋ฌธ์ ์ค๋ช
๐ก 2. ์ ๊ทผ๋ฐฉ์FILE_PATH ์ถ๋ ฅ ์์๋ฅผ ๋ณด๊ณ '/home/grep/src/' + F.BOARD_ID + '/' + F.FILE_ID + F.FILE_NAME + F.FILE_EXT์ด๋ ๊ฒ ๋ฌธ์์ด์ด ๊ฒฐํฉ๋ ๊ตฌ์กฐ๋ผ๋ ๊ฑธ ์ ์ ์์๋ค. CONCAT์ผ๋ก ํด๋น ๋ฌธ์์ด์ ๋ชจ๋ ๊ฒฐํฉ ํด ์ค๋ค. ์ฒ์์๋ ํท๊ฐ๋ ค์ + ์ฐ์ฐ์๋ก ํ๋๋ฐ ,๋ก ๊ฒฐํฉ์ ํด ์ค์ผ ํ๋ค. ๋ ํ
์ด๋ธ ์กฐ์ธํ ๋๋ BOARD_ID ์ปฌ๋ผ์ ๊ธฐ์ค์ผ๋ก ์กฐ์ธ ํด ์ค๋ค. WHERE ์ ์์ ์๋ธ์ฟผ๋ฆฌ๋ฅผ ์ด๋ค. ๋จผ์ USED_GOODS_BOARD๋ฅผ ์กฐํ์ ์ปฌ๋ผ(VIEW) ๊ธฐ์ค์ผ๋ก ๋ด๋ฆผ์ฐจ์ ํด ์ฃผ๊ณ ๊ทธ ์ค ๊ฐ์ฅ ๋์ ๊ฒ๋ง ๊ฐ์ ธ์์ผ ํ๋๊น LIMIT1 ์ ๊ฑธ์ด์ค๋ค. ๋ง์ง๋ง์ผ๋ก FILE_ID๋ก ๋ด๋ฆผ์ฐจ์ ์ ๋ ฌํ๋ฉด ๋~! ์ฝ๋คโญ 3. ์ ๋ต์ฝ๋..
My Tech Blog (Algorithm/SQLํ ์คํธ)
1. ๋ฌธ์ ์ค๋ช
2. ์ ๊ทผ๋ฐฉ์ECOLI_DATA๋ ๋ถ๋ชจ-์์๊ฐ์ ๊ณ์ธต ๊ด๊ณ๋ฅผ ์ด๋ฃจ๊ณ ์๊ธฐ ๋๋ฌธ์ ๊ฐ ์ธ๋๋ณ๋ก ์์์ด ์๋ ๊ฐ์ฒด์ ์๋ฅผ ์ถ๋ ฅํ๋ ค๋ฉด ์ฌ๊ท CTE๋ฅผ ์ฌ์ฉํด์ ๋์ฅ๊ท ์ ์ธ๋generation)๋ฅผ ๊ณ์ฐํด ์ฃผ์ด์ผ ํ๋ค. WITH RECURSIVE ๋ธ๋ก์ ๋จผ์ ์ง์ ํด ์ฃผ๊ณ , ๋ธ๋ก ๋ฐ๊นฅ์์ ์ธ๋๋ณ๋ก ์์์ด ์๋ ๊ฐ์ฒด์๋ฅผ ์กฐํํ๋ ์ฟผ๋ฆฌ๋ฅผ ์ง ์ฃผ๋ฉด ๋๋ค. WITH RECURSIVE ๋ธ๋ก์ ๋ ๋ ๋ถ๋ถ์ผ๋ก ๋๋๋๋ฐ, ๋จผ์ , PARENT_ID IS NULL์ธ ์กฐ๊ฑด์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์กฐํํด์ 1์ธ๋(AS GENERATION)๋ฅผ ๊ท์ ํด ์ค๋ค. ๋ ๋ฒ์งธ๋ก ํ ์ผ์, ์ด 1์ธ๋ ์ปฌ๋ผ์ ๊ธฐ์ค์ผ๋ก +1์ ํด์ ๊ณ์ธต ๊ตฌ์กฐ๋ฅผ ์กฐํ ํ๋ ๊ฒ์ด๋ค. ์ฆ, ๋ถ๋ชจ ๊ฐ์ฒด๋ก๋ถํฐ ์์์ ์ธ๋ ์๋ฅผ ๊ณ์ฐ ํด ์ฃผ๋ ๊ฒ์ด๋ค. Generation ..
์ด๋ ค์์ ๋ฏธ๋ฃจ๋ค๊ฐ ๋ชป ํผ ๋ฌธ์ ๊ฐ 2๊ฐ ์์๋ค. Lv4 ๋ฌธ์ 1๊ฐ๋ Lv5 ๋ฌธ์ 1๊ฐ์ด๋ค. ๋์ด๋ ์ต์์ธ ๋งํผ, ๋ฌธ์ ์ฝ๊ธฐ๋ ์ ์ ํ๊ธฐ๊ฐ ๋๋ ค์ด ๋ง์์ด ์์๋ค. ์ด ๋ฌธ์ ๋ ์ ์ง ์ค๋ซ ๋์ ๋
ธํธ๋ถ ์์ ์์์ ๋จธ๋ฆฌ ๋ง์ด ์ฐ๊ณ ๊ณ ๋ฏผํด ๋ด์ผ ๋ ๊ฒ ๊ฐ์์ ํ๊ธฐ์ซ์๋ค. MySQL์์๋ START WITH CONNECT BY๊ฐ ์๋๋ค๋ ๊ฑฐ ์๊ณ ๋ถํฐ๋ ๋ ์๋ก์ด๊ฑฐ ๋ฐฐ์ฐ๊ธฐ ์ซ์ด์ ๋ฏธ๋ค๋๋ฐ ์ค๋ ์ผ๋ฅธ ๋๋ด๋ฒ๋ฆฌ๊ณ ์์ผ์ง1. ๋ฌธ์ ์ค๋ช
2. ์ ๊ทผ๋ฐฉ์์ฒ์์๋ ์ด๋ ค์ ๋ณด์ฌ์ ๋ฌธ์ ๋ฅผ ์ฝ๊ณ ๋ญ ๊ตฌํด์ผ ํ๋์ง ์๊ฐ์ ํ๋ฆ์ ํ๊ธ๋ก ๋ฐ์ ์ ์ด ๋ดค๋ค. PARENT_ID๊ฐ NULL์ด๋ฉด 1์ธ๋์ด๋ค. PARENT_ID๊ฐ NULL์ธ ID๋ฅผ ๋ถ๋ชจ๋ก ๊ฐ์ง๋ ํ์ด 2์ธ๋ ์ด๋ค. PARENT_ID๊ฐ NULL์ธ ID๋ฅผ ๋ถ๋ชจ๋ก ๊ฐ์ง๋ ํ์ ID๋ฅผ ๋ถ๋ชจ๋ก ๊ฐ..
1. ๋ฌธ์ ์ค๋ช
2. ์ ๊ทผ ๋ฐฉ๋ฒ๋ฌธ์ ๋ฅผ ๋ณด๊ณ ๋ ์๊ฐ์ `์ฐ๊ด ์ปฌ๋ผ์ด ์์ ๋๋ ํ
์ด๋ธ์ ์ด๋ป๊ฒ ์กฐ์ธํ๋๊ฐ?` -> ๊ทธ๋์ ์นดํ
์์ ๊ณฑ์ด ๋ ์ฌ๋๋ค.๋ชจ๋ ์กฐํฉ์ ์์ฑํ๋ ๊ฒฝ์ฐ๋ฅผ ์นดํ
์์ ๊ณฑ(Cartesian Product)์ด๋ผ๊ณ ํ๋๋ฐ CROSS JOIN ํด ์ฃผ๋ ๊ฒ์ด๋ค.์ผ๋จ ์ฌ๊ธฐ๊น์ง๋ง ์์ฑ ํ๊ณ ์ฟผ๋ฆฌ๋ฅผ ์คํ์์ผ ๋ณด๊ธฐ๋ก ํ๋ค. ํ
์ด๋ธ์ด ์์ผ๋ก ๋ถ์๋ค. ์ฌ๊ธฐ์ ๋ ์ง๋ณ๋ก GROUP BY ํด ๋ณด๊ณ ๋ญ๊ฐ ํด ๋ณด๋ ค๊ณ ํ๋๋ฐ ์ค๊ฐ์ ๊ธฐ๊ฐ ๋งํ ์๊ฐ์ด ๋ฌ๋ค.ํ
์ด๋ธ์ ์์ด ์๋๋ผ ์๋๋ก ๋ถ์ด๋ฉด ๋๊ฒ ๋ค. ๊ทธ๋ผ UNION ALL์ ์จ ๋ณด๋๊ฒ ์ด๋จ๊น?๊ทธ๋์ ์๋๋ก ๋ฐ์ดํฐ๋ฅผ ๋ถ์ด๋๊ฒ ์ข๊ฒ ๋ค๊ณ ์๊ฐํ๋ค.๊ทธ๋ฆฌ๊ณ ์ค๋ณต๊ฐ์ ์์ ๋ฉด ์๋๊ธฐ ๋๋ฌธ์ UNION์ด ์๋๋ผ UNION ALL... ์ค๋ง...!! SELECT SALES_DATE..
๋์ด๋ 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. ๊ฒฝ๊ธฐ๋์ ์์นํ ์ํ์ฐฝ๊ณ ๋ชฉ๋ก ์ถ๋ ฅํ๊ธฐ2. ์ด๋ฆ์ด ์๋ ๋๋ฌผ์ ์์ด๋ / ์ด๋ฆ์ด ์๋ ๋๋ฌผ์ ์์ด๋3. NULL ์ฒ๋ฆฌํ๊ธฐ4. ๋์ด ์ ๋ณด๊ฐ ์๋ ํ์ ์ ๊ตฌํ๊ธฐ5. ROOT ์์ดํ
๊ตฌํ๊ธฐ6. ์ก์ ๋ฌผ๊ณ ๊ธฐ์ ํ๊ท ๊ธธ์ด ๊ตฌํ๊ธฐ7. โญ์
๊ทธ๋ ์ด๋ ํ ์ ์๋ ์์ดํ
๊ตฌํ๊ธฐ1. ๊ฒฝ๊ธฐ๋์ ์์นํ ์ํ์ฐฝ๊ณ ๋ชฉ๋ก ์ถ๋ ฅํ๊ธฐSELECT WAREHOUSE_ID, WAREHOUSE_NAME, ADDRESS, (IFNULL(FREEZER_YN,'N')) AS FREEZER_YNFROM FOOD_WAREHOUSEWHERE ADDRESS LIKE '๊ฒฝ๊ธฐ๋%'ORDER BY WAREHOUSE_ID;2. ์ด๋ฆ์ด ์๋ ๋๋ฌผ์ ์์ด๋ & ์ด๋ฆ์ด ์๋ ๋๋ฌผ์ ์์ด๋SELECT ANIMAL_IDFROM ANIMAL_INSWHERE..
1. ๋ฌธ์ ์ค๋ช
๋ฌธ์ ๋ถํ๋ ์ฐ๋(YEAR), ๋ถํ๋ ์ฐ๋๋ณ ๋์ฅ๊ท ํฌ๊ธฐ์ ํธ์ฐจ(YEAR_DEV), ๋์ฅ๊ท ๊ฐ์ฒด์ ID(ID) ๋ฅผ ์ถ๋ ฅํ๋ SQL ๋ฌธ์ ์์ฑํด์ฃผ์ธ์. ๋ถํ๋ ์ฐ๋๋ณ ๋์ฅ๊ท ํฌ๊ธฐ์ ํธ์ฐจ๋ ๋ถํ๋ ์ฐ๋๋ณ ๊ฐ์ฅ ํฐ ๋์ฅ๊ท ์ ํฌ๊ธฐ - ๊ฐ ๋์ฅ๊ท ์ ํฌ๊ธฐ๋ก ๊ตฌํ๋ฉฐ ๊ฒฐ๊ณผ๋ ์ฐ๋์ ๋ํด ์ค๋ฆ์ฐจ์์ผ๋ก ์ ๋ ฌํ๊ณ ๊ฐ์ ์ฐ๋์ ๋ํด์๋ ๋์ฅ๊ท ํฌ๊ธฐ์ ํธ์ฐจ์ ๋ํด ์ค๋ฆ์ฐจ์์ผ๋ก ์ ๋ ฌํด์ฃผ์ธ์.2. ์ ๊ทผ๋ฐฉ๋ฒ ๊ฐ์ฅ ํฐ ๋์ฅ๊ท ์ ํฌ๊ธฐ๋ฅผ ๊ตฌํด์ค์ผ ํ๋ฏ๋ก MAX(SIZE_OF_COLONY)๋ฅผ ํด ์ค์ผ ํ ๊ฒ ๊ฐ๊ณ ์ฐ๋๋ณ๋ก ๊ตฌํด์ผ ํ๋๊น ์๋์ฐ ํจ์์จ ์ค์ ์ฐ๋๋ก ํํฐ์
๋ ํด ์ฃผ์ด์ผ ํ๋ค. ์ผ๋จ ์ด ์์
์ ๋จผ์ ํ ํ์ ํด๋น ๊ฒฐ๊ณผ๋ฅผ ๊ฐ์ง๊ณ ๋ค์ ๋ฐ์ดํฐ๋ฅผ ์ถ์ถ ํด ์ฃผ๊ณ ORDER BY ์ ๋ ฌ์ ํด ์ฃผ์ด์ผ ๊ฒ ๋ค๊ณ ์๊ฐํ๋ค. ๋จผ์ , ..