1. ๋ฌธ์ ์ค๋ช
2. ์ ๊ทผ๋ฐฉ์ & ์ ๋ต์ฝ๋SELF JOIN์ผ๋ก ๋ถ๋ชจ-์์ ๊ด๊ณ๋ฅผ ๋์ผํ ํ
์ด๋ธ ๋ด์์ ์กฐ์ธํด์ ํ์ด์ฃผ์.ํ๋์ ํ
์ด๋ธ์ ALIAS๋ฅผ ์ค์ ๋ง์น ๋ ๊ฐ์ ํ
์ด๋ธ์ด ์๋ ๊ฒ์ฒ๋ผ ๋ ๋ฒ ์ฐธ์กฐํ๋ ๊ฒ์ด๋ค. ๋ด๊ฐ ์๊ณ ์๋ ๊ฐ์ฅ ์ผ๋ฐ์ ์ธ SELF JOIN ์์๋ ์ง์๋ณ ๋งค๋์ ๋ฅผ ๋ํ๋ธ 1๊ฐ์ ํ
์ด๋ธ์ ์๊ธฐ์์ ๊ณผ ์กฐ์ธํ๋ ๊ฒ์ด๋ค. ๋ ๊ณ์ธต์ฟผ๋ฆฌ์์๋ SELF JOIN์ด ๋ง์ด ์ฐ์ธ๋ค. ์ด ๋ฌธ์ ์์๋ ํ๋์ ํ
์ด๋ธ์ ๋ถ๋ชจ์ ์์ด๋์ ์์์ ์์ด๋, ๊ฐ์ฒด์ ํ์ง(GENOTYPE)์ด ๋ชจ๋ ๋ค์ด ์๋ค. ๋ถ๋ชจ์ ํ
์ด๋ธ์ P๋ก, ์์์ ํ
์ด๋ธ์ ๊ทธ๋ฅ A๋ผ๊ณ ๋ณ์นญ์ ์ค ๋ค ์์ํ
์ด๋ธ์ PARENT_ID์ปฌ๋ผ์ ๋ถ๋ชจ ํ
์ด๋ธ์ ID ๊ฐ์ผ๋ก ์กฐ์ธ ํ๋ค. ๊ทธ ํ WHERE ์ ์ `A.GENOTYPE & P.GENOTYPE ..
My Tech Blog (ํ์ด)
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์ ์์ฑํ๊ธฐ๊ฐ ์กฐ๊ธ ์ด๋ ค์ธ ์ ์๊ธฐ ๋๋ฌธ์ ํ๋์ฉ ์ฐจ๊ทผ ์ฐจ๊ทผ ์ค๋ช
์ ํด ๋ณด๊ฒ ๋ค. ๋จผ์ ๋นํธ์ฐ์ฐ์ด๋ ๊ฑธ ๋ชจ๋ฅด๋ฉด ์ดํด๊ฐ ์ด๋ ค์ธ ์ ์๊ธฐ ๋๋ฌธ์ ๋นํธ์ฐ์ฐ ๋จผ์ ์์๋ณด์.๋นํธ์ฐ์ฐ์ด๋?๋นํธ ์ฐ์ฐ์ ์ซ์๋ฅผ ์ด์ง์ ํํ๋ก ๋ณํํ์ฌ ๊ฐ ๋นํธ๋ฅผ ๊ธฐ์ค์ผ๋ก ์ฐ์ฐ์ ์ํํ๋ ๋ฐฉ์์ด๋ค. ํ๋ก๊ทธ..
๐ฆ๋ฌธ์ ์ค๋ช
์ฒ์์๋ ๋ณต์กํ๊ฒ ์๊ฐํด์ ๋ฌธ์ ๋ฅผ ํ์ง ๋ชปํ๋ค. ๋๋ `๋ ํ
์ด๋ธ์ ์กฐ์ธ์ ํด์ผ ํ๋๋ฐ ์กฐ์ธ ์กฐ๊ฑด์ ์ด๋ป๊ฒ ์ฃผ์ง?` ์ด๋ ๊ฒ ์๊ฐ์ ํ๊ณ ๋ฌธ์ ์ ์ ๊ทผํ๋ค. ๊ฒฐ๋ก ๋ถํฐ ๋งํ๋ฉด ์กฐ์ธ์ ํ ์ ์๋ค.์ด๊ฑด ์๋ธ์ฟผ๋ฆฌ๋ก ํธ๋ ๋ฌธ์ ์๋ค. ๋๋ ์ฒ์์ ์ด ๋ฌธ์ ๊ฐ ์๋ฐ ์๊ณ ๋ฆฌ์ฆ ์ฝ๋ฉํ
์คํธ์ฒ๋ผ ๋๊ปด์ก๋ค. ์๋ํ๋ฉด ๋ด๊ฐ ์ง์ ์ด์ง์ ๊ณ์ฐ์ ํ๋ ๋ก์ง์ ์ง์ผ ํ๋๊ฑด๊ฐ? ๋ผ๋ ์๊ฐ์ ํ๊ธฐ ๋๋ฌธ์ด๋ค.์๋ฆฌ์2561286432168421์ด์ง์110010000 ์ญ์ง์๋ฅผ ์ด์ง์๋ก ๋ฐ๊พธ๋ `BIN(SKILL_CODE)` ํจ์ ์จ์ CODE ์ปฌ๋ผ์ด๋ ๋ง์ถฐ๋ณผ๊น ์๊ฐํ๋๋ฐ ์ด๋ป๊ฒ ํด์ผ ์ข์ ์ง ์ฝ๊ฒ ์๊ฐ์ด ๋์ง ์์๋ค. ๊ทธ ํ์ `SUBSTRING(BIN(SKILL_CODE),?,?)` ์ด๋ฐ ์์ผ๋ก ๊ฐ์ ์๋ผ ์ค์ผ ํ๋ ์๊ฐ๋ ํด ๋ดค..
๐ ๊ฐ์ฅ ํฐ ๋ฌผ๊ณ ๊ธฐ 10๋ง๋ฆฌ ๊ตฌํ๊ธฐ ๊ฐ์ฅ ํฐ ๋ฌผ๊ณ ๊ธฐ 10๋ง๋ฆฌ๋ฅผ ์ ํํ๋ผ๊ณ ํ์ผ๋๊น, ROWNUM์์จ์ผ ํ๋ค. ํ์ง๋ง ROWNUM์ Oracle์๋ง ์๋ ๋ฌธ๋ฒ์ด๊ณ , MySQL์์๋ LIMIT ํค์๋๋ก ๊ฐ์ ๊ธฐ๋ฅ์ ์ํํ๋ค. ์ฃผ์ํ ์ , ROWNUM / LIMIT ์ ์๋ธ์ฟผ๋ฆฌ(subquery)์ ํจ๊ป ์ฌ์ฉํด์ผ ํ๋ค. ์๋ธ์ฟผ๋ฆฌ๋ฅผ ์ ์ฐ๋ฉด WHERE์ ์ด SELECT์ ๋ณด๋ค ๋จผ์ ์ํ๋์ด ์ํ๋ ๊ฐ์ด ๋์ค์ง ์๋๋ค. ๊ธธ์ด๊ฐ ํฐ ์์ผ๋ก 10๊ฐ๋ฅผ ๊ฐ์ ธ์์ผ ํ๋๋ฐ, ๊ธธ์ด์ ์๊ด ์์ด ๋๋คํ ๊ฐ 10๊ฐ๊ฐ ์ ํ๋๋ ๊ฒ์ด๋ค. ์ด๊ฒ์ SQL๋ฌธ์ ์คํ์์ ๋๋ฌธ์ด๋ค. SQL์ ์คํ ์์FROM - WHERE(ROWNUM ์คํ) - GROUP BY - HAVING - SELECT - ORDER BY LENGTH๋ฅผ ํฐ ๊ฐ๋ถํฐ ์ ..
์ฌ์ด ๋ฌธ์ ๋ ํ ๋ฒ์ ๋ ์ธ๊ฐ์ฉ ํฌ์คํ
ํ๋ ค๊ณ ํ๋๋ฐ์ด ๋ฌธ์ ๋ ์๊ฐ ํด ๋ณผ ์ฌ์ง๊ฐ ๋ง๊ธฐ ๋๋ฌธ์ ํ๋๋ง ์ฌ๋ฆฐ๋ค.๋
ผ๋์ ์ฌ์ง๊ฐ ์๊ณ ๋ง์ ์๋ฌธ์ด ์ ๊ธฐ๋๋ ๋ฌธ์ ์ธ๋ฐ ๊ฐ์ ๊ณ ๋ฏผ์ ํ์ ๋ถ๋ค๊ป ์ด ๋ฌธ์ ์ ๊ด๋ จํด์ ๋ด๊ฐ ์๊ฐํด๋ณด๊ณ ์กฐ์ฌํ ๋ด์ฉ์ ๊ณต์ ๋ฅผ ํด๋ณด๊ณ ์ํ๋ค. ๋ด๊ฐ ๊ถ๊ธํ๋ ์ ์ ์๋ ๋ ๊ฐ์ง์๋ค. - "LENGTH ์ NULL ๋ง ์๋ ๊ฒฝ์ฐ๋ ์์ต๋๋ค"๋ผ๋ ์กฐ๊ฑด์ ์ ํ์ํ ๊ฒ์ธ๊ฐ์?- ์ ํ
์คํธ ์ผ์ด์ค 2๋ง ์คํจ๊ฐ ๋จ๋ ๊ฒ์ธ๊ฐ์? ๋ด์ง 10cm ์ดํ์ธ๋ฐ ์ ์ ๋ต์ฝ๋์์๋ ` ์ด ํฌ์คํ
์ ๋ํด์๋ ์ ์ง๋ฌธ๋ค์ ๋ํด ๋ช
์พํ ํด๋ต์ ํ ๊ฒ์ด๋ค์ฒซ๋ฒ์งธ ์ง๋ฌธ์ ๋ฌธ์ ๋ฅผ ์์ธํ ์ฝ๊ณ ์๊ฐํด๋ณด๋ ๋ต์ ์ฐพ์ ์ ์์๊ณ ๋๋ฒ์งธ ์ง๋ฌธ์ ๋ค๋ฅธ ์ฌ๋์ ์ค๋ช
์ ์ฐธ๊ณ ํ๋ค. ๐ ์์ฑ์ด ์ก์ ์ ๊ตฌํ๊ธฐ LENGTH ์ปฌ๋ผ์ NULL๊ฐ์ด..
๐ ๋ชจ๋ ๋ ์ฝ๋ ์กฐํํ๊ธฐ10์ด์ปท ๋ฌธ์ SELECT *FROM ANIMAL_INSORDER BY ANIMAL_ID; ๐ฆ ์กฐ๊ฑด์ ๋ง๋ ํ์์ ๊ตฌํ๊ธฐSELECT COUNT(*)FROM USER_INFOWHERE YEAR(JOINED) = '2021' AND AGE BETWEEN 20 AND 29;๐ป Python ๊ฐ๋ฐ์ ์ฐพ๊ธฐ ๋ณดํต ์ฉ์ด๋ณด๋ค์ด ํธ๋ ๋ฐฉ๋ฒSELECT ID, EMAIL, FIRST_NAME, LAST_NAMEFROM DEVELOPER_INFOSWHERE SKILL_1 = 'Python' OR SKILL_2 = 'Python' OR SKILL_3 = 'Python'ORDER BY ID; ํ ๋ฒ ์๊ฐ ํด ๋ณด๊ณ ํ๋ฉด ์ด๋ ๊ฒ ใ
ใ
ใ
SELECT ID, EMAIL, FIRST_NAME, L..
๐ 1. ๋ฌธ์ ์ค๋ช
์ํฌ์๋ ์ํ์ ํฌ๊ธฐํ ์ฌ๋์ ์ค๋ง์
๋๋ค. ์ํฌ์ ์ผ์ธ๋ฐฉ์ ๋ชจ์๊ณ ์ฌ์ ์ํ ๋ฌธ์ ๋ฅผ ์ ๋ถ ์ฐ์ผ๋ ค ํฉ๋๋ค. ์ํฌ์๋ 1๋ฒ ๋ฌธ์ ๋ถํฐ ๋ง์ง๋ง ๋ฌธ์ ๊น์ง ๋ค์๊ณผ ๊ฐ์ด ์ฐ์ต๋๋ค. 1๋ฒ ์ํฌ์๊ฐ ์ฐ๋ ๋ฐฉ์: 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, ... 2๋ฒ ์ํฌ์๊ฐ ์ฐ๋ ๋ฐฉ์: 2, 1, 2, 3, 2, 4, 2, 5, 2, 1, 2, 3, 2, 4, 2, 5, ... 3๋ฒ ์ํฌ์๊ฐ ์ฐ๋ ๋ฐฉ์: 3, 3, 1, 1, 2, 2, 4, 4, 5, 5, 3, 3, 1, 1, 2, 2, 4, 4, 5, 5, ... 1๋ฒ ๋ฌธ์ ๋ถํฐ ๋ง์ง๋ง ๋ฌธ์ ๊น์ง์ ์ ๋ต์ด ์์๋๋ก ๋ค์ ๋ฐฐ์ด answers๊ฐ ์ฃผ์ด์ก์ ๋, ๊ฐ์ฅ ๋ง์ ๋ฌธ์ ๋ฅผ ๋งํ ์ฌ๋์ด ๋๊ตฌ์ธ์ง ๋ฐฐ์ด์ ๋ด์ return ํ๋๋ก solution ํจ์..
๐ 1. ๋ฌธ์ ์ค๋ช
๋ช
ํจ ์ง๊ฐ์ ๋ง๋๋ ํ์ฌ์์ ์ง๊ฐ์ ํฌ๊ธฐ๋ฅผ ์ ํ๋ ค๊ณ ํฉ๋๋ค. ๋ค์ํ ๋ชจ์๊ณผ ํฌ๊ธฐ์ ๋ช
ํจ๋ค์ ๋ชจ๋ ์๋ฉํ ์ ์์ผ๋ฉด์, ์์์ ๋ค๊ณ ๋ค๋๊ธฐ ํธํ ์ง๊ฐ์ ๋ง๋ค์ด์ผ ํฉ๋๋ค. ์ด๋ฌํ ์๊ฑด์ ๋ง์กฑํ๋ ์ง๊ฐ์ ๋ง๋ค๊ธฐ ์ํด ๋์์ธํ์ ๋ชจ๋ ๋ช
ํจ์ ๊ฐ๋ก ๊ธธ์ด์ ์ธ๋ก ๊ธธ์ด๋ฅผ ์กฐ์ฌํ์ต๋๋ค.์๋ ํ๋ 4๊ฐ์ง ๋ช
ํจ์ ๊ฐ๋ก ๊ธธ์ด์ ์ธ๋ก ๊ธธ์ด๋ฅผ ๋ํ๋
๋๋ค. ๊ฐ์ฅ ๊ธด ๊ฐ๋ก ๊ธธ์ด์ ์ธ๋ก ๊ธธ์ด๊ฐ ๊ฐ๊ฐ 80, 70์ด๊ธฐ ๋๋ฌธ์ 80(๊ฐ๋ก) x 70(์ธ๋ก) ํฌ๊ธฐ์ ์ง๊ฐ์ ๋ง๋ค๋ฉด ๋ชจ๋ ๋ช
ํจ๋ค์ ์๋ฉํ ์ ์์ต๋๋ค. ํ์ง๋ง 2๋ฒ ๋ช
ํจ์ ๊ฐ๋ก๋ก ๋ํ ์๋ฉํ๋ค๋ฉด 80(๊ฐ๋ก) x 50(์ธ๋ก) ํฌ๊ธฐ์ ์ง๊ฐ์ผ๋ก ๋ชจ๋ ๋ช
ํจ๋ค์ ์๋ฉํ ์ ์์ต๋๋ค. ์ด๋์ ์ง๊ฐ ํฌ๊ธฐ๋ 4000(=80 x 50)์
๋๋ค. ๋ชจ๋ ๋ช
ํจ์ ๊ฐ๋ก ๊ธธ์ด์ ์ธ๋ก ๊ธธ์ด..