1. ๋ฌธ์ ์ค๋ช
2. ์ ๊ทผ ๋ฐฉ๋ฒ & ์ ๋ต์ฝ๋
`GENOTYPE`์ ์ด์ง์๋ก ๋ณํํ ๊ฐ์ `๊ฐ ์๋ฆฟ์`๊ฐ `๋ณด์ ํ ํ์ง`์ ๋ํ๋ด๋ฏ๋ก
๋นํธ์ฐ์ฐ์ ํด ์ฃผ์ด์ผ ํ๋ ๋ฌธ์ ๋ผ๋ ๊ฑธ ์ ์ ์๋ค !
SELECT COUNT(*) AS COUNT
FROM ECOLI_DATA A
WHERE 1=1
AND (GENOTYPE & 2) != 2
AND ((GENOTYPE & 4) = 4 OR (GENOTYPE & 1) = 1)
์ด ๋ฌธ์ ๋ WHERE์ ์์ฑํ๊ธฐ๊ฐ ์กฐ๊ธ ์ด๋ ค์ธ ์ ์๊ธฐ ๋๋ฌธ์ ํ๋์ฉ ์ฐจ๊ทผ ์ฐจ๊ทผ ์ค๋ช
์ ํด ๋ณด๊ฒ ๋ค.
๋จผ์ ๋นํธ์ฐ์ฐ์ด๋ ๊ฑธ ๋ชจ๋ฅด๋ฉด ์ดํด๊ฐ ์ด๋ ค์ธ ์ ์๊ธฐ ๋๋ฌธ์ ๋นํธ์ฐ์ฐ ๋จผ์ ์์๋ณด์.
๋นํธ์ฐ์ฐ์ด๋?
๋นํธ ์ฐ์ฐ์ ์ซ์๋ฅผ ์ด์ง์ ํํ๋ก ๋ณํํ์ฌ ๊ฐ ๋นํธ๋ฅผ ๊ธฐ์ค์ผ๋ก ์ฐ์ฐ์ ์ํํ๋ ๋ฐฉ์์ด๋ค. ํ๋ก๊ทธ๋๋ฐ๊ณผ ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ํจ์จ์ ์ผ๋ก ๋ฐ์ดํฐ ์ฒ๋ฆฌ๋ฅผ ํ ๋ ์์ฃผ ์ฌ์ฉ๋ฉ๋๋ค. ์ฃผ์ ์ฐ์ฐ์๋ `AND(&)`, `OR(|)`, `XOR(^)`, `NOT(~)`, ๊ทธ๋ฆฌ๊ณ ๋นํธ ์ด๋ ์ฐ์ฐ์(`>`,`<`) ๋ผ๋ ๊ฒ๋ ์๋ค. ๋นํธ ์ฐ์ฐ์ ํ ๋๋ ์ญ์ง์๋ก ํํ์ด ๋์ด ์๋๋ผ๋ ์ด์ง์๋ก ๋ฐ๊พผ ๋ค ๊ฐ ์๋ฆฟ์๋ฅผ ๋น๊ตํด์ผ ํ๋ค.
๋นํธ์ฐ์ฐ ํ๋ ๋ฒ
์๋ฅผ ๋ค์ด, 48&32๋ฅผ ๋นํธ AND ์ฐ์ฐ ํด ๋ณด์
์ซ์๋ฅผ ์ด์ง์๋ก ๋ณํ ํ ๊ฐ ์๋ฆฟ์๋ฅผ ๋น๊ตํฉ๋๋ค.
๋นํธ `AND(&) ์ฐ์ฐ`์ `์์ชฝ ๋นํธ`๊ฐ `๋ชจ๋ 1`์ผ ๋๋ง ๊ฒฐ๊ณผ๊ฐ 1์ด ๋ฉ๋๋ค.
48 (10์ง์) → 110000 (2์ง์)
32 (10์ง์) → 100000 (2์ง์)
48: 110000
& 32: 100000
----------------
100000
๋ฐ๋ผ์ ์ด ๊ฒฐ๊ณผ๊ฐ์ 100000์ผ๋ก ์ด์ง์๋ฅผ ์ญ์ง์๋ก ๋ฐ๊พธ๋ฉด 32์ด๋ค.
์์ ๊ฐ์ ๋ฐฉ๋ฒ์ผ๋ก ๋นํธ ์ฐ์ฐ์ ํด ์ฃผ๋ ๊ฒ์ธ๋ฐ,
์ด ๋ฌธ์ ์์ ๋นํธ์ฐ์ฐ์ ํด ์ฃผ์ด์ผ ํ ๋์์ GENOTYPE์ปฌ๋ผ๊ณผ 1,2,3,4์ ํด๋นํ๋ ๊ฐ ์ซ์์ด๋ค.
SELECT COUNT(*) AS COUNT
FROM ECOLI_DATA A
WHERE 1=1
AND (GENOTYPE & 2) != 2
AND ((GENOTYPE & 4) = 4 OR (GENOTYPE & 1) = 1)
๋นํธ ์ฐ์ฐ์ ์ฌ์ฉํ์ฌ ํน์ ํ์ง(๋นํธ ๊ฐ)์ ์กด์ฌ ์ฌ๋ถ๋ฅผ ํ์ธํด ์ฃผ๋ ์ฟผ๋ฆฌ๋ฅผ ์ง ์ค๋ค.
WHERE 1 = 1
ํญ์ ์ฐธ์ธ ์กฐ๊ฑด์ผ๋ก, ์ดํ์ ์กฐ๊ฑด๋ค์ ์ถ๊ฐ๋ก ์ฐ๊ฒฐํ๊ธฐ ์ํ ๊ตฌ๋ฌธ์ด๋ค.
์ค์ง์ ์ผ๋ก ์๋ฏธ๊ฐ ์์ผ๋ฉฐ, ์ถ๊ฐ ์กฐ๊ฑด์ด ๋์ ์ผ๋ก ์์ฑ๋๋ ์ํฉ์์ ์ฌ์ฉ๋๋ค.
๋ฌธ์ ์ ์กฐ๊ฑด์
2๋ฒ ํ์ง์ด ์๋ ๊ฐ์ฒด์ด๋ฉฐ ์ด ์ค 1๋ฒ์ด๋ 3๋ฒ ํ์ง์ ๋ณด์ ํ ๊ฒ์ด๋ผ๊ณ ํ๋ค.
2๋ฒ ํ์ง์ด ์๋ ๊ฐ์ฒด: GENOTYPE์ ๋ ๋ฒ์งธ ๋นํธ๊ฐ ๊บผ์ ธ ์์ด์ผ ํจ.
1๋ฒ ๋๋ 3๋ฒ ํ์ง์ ๋ณด์ ํ ๊ฐ์ฒด: GENOTYPE์ ์ฒซ ๋ฒ์งธ ๋นํธ ๋๋ ์ธ ๋ฒ์งธ ๋นํธ๊ฐ ์ผ์ ธ ์์ด์ผ ํจ.
GENOYPE & 2๋ฅผ ํ ๊ฐ์ 2๊ฐ ์๋์ด์ผ ํ๊ณ
๊ทธ ์ค GENOTYPE & 4๋ฅผ ํ ๊ฐ์ด 4์ด๊ฑฐ๋ GENOTYPE & 1์ ํ ๊ฐ์ด 1์ด์ด์ผ ํ๋ค.
์ 1๋ฒ์ด๋ 3๋ฒ ํ์ง์ ๋ณด์ ํ ๊ฑธ ์ฐพ์ผ๋ผ๊ณ ํ๋๋ฐ ๋นํธ ์ฐ์ฐ์ 4๋ 1์ ํ๋์ง ์๋ฌธ์ด ์๊ธฐ๋ ๋ถ๋ค์ด ์์ ๊ฒ์ด๋ค.
์ด์ง์์ ํ์์ ์ดํด ๋ณด์. ์ด ์ง์์์ ์ฒซ ๋ฒ์งธ ๋นํธ๊ฐ ๋ํ๋ด๋ ๊ฐ์ 1์ด๊ณ ์ธ ๋ฒ์งธ ๋นํธ์ ๊ฐ์ 4์ด๊ธฐ ๋๋ฌธ์ด๋ค.
๊ฐ ์๋ฆฟ์ ๊ฐ | 8 | 4 | 2 | 1 |
๋นํธ ์์ | ๋ค๋ฒ์งธ ๋นํธ | ์ธ๋ฒ์งธ ๋นํธ | ๋๋ฒ์งธ ๋นํธ | ์ฒซ๋ฒ์งธ ๋นํธ |
1. (GENOTYPE & 2) != 2
์ด ์ฐ์ฐ์ GENOTYPE์ `๋ ๋ฒ์งธ ๋นํธ`๊ฐ ๊บผ์ ธ ์๋์ง ํ์ธํ๋ ์ ์ฐจ์ด๋ค.
๋นํธ ์ฐ์ฐ &๋ฅผ ์ฌ์ฉํ์ฌ GENOTYPE์์ `๋ ๋ฒ์งธ ๋นํธ(2์ง์ ๊ฐ: 2 = 0010)`๊ฐ ์ผ์ ธ ์๋์ง ํ์ธํ๋ค.
๊ฒฐ๊ณผ๊ฐ 2๊ฐ ์๋๋ผ๋ฉด(์ฆ, 0์ด๋ผ๋ฉด), ๋ ๋ฒ์งธ ๋นํธ๊ฐ ๊บผ์ ธ ์๋ ๊ฒ์ด๋ค.
2. ((GENOTYPE & 4) = 4 OR (GENOTYPE & 1) = 1)
GENOTYPE์ ์ธ ๋ฒ์งธ ๋นํธ(๊ฐ 4, 2์ง์ 0100) ๋๋ ์ฒซ ๋ฒ์งธ ๋นํธ(๊ฐ 1, 2์ง์ 0001) ์ค ํ๋ ์ด์์ด ์ผ์ ธ ์๋์ง ํ์ธ
์ฒซ ๋ฒ์งธ ์กฐ๊ฑด (GENOTYPE & 4) = 4
์ธ ๋ฒ์งธ ๋นํธ๊ฐ 1์ธ์ง ํ์ธ
๋ ๋ฒ์งธ ์กฐ๊ฑด (GENOTYPE & 1) = 1
์ฒซ ๋ฒ์งธ ๋นํธ๊ฐ 1์ธ์ง ํ์ธ
๋ ์ค ํ๋๋ผ๋ ๋ง์กฑํ๋ฉด ์ฐธ(OR ์กฐ๊ฑด)