โ๐ป programmers Lv2. MySQL ์๋ฃ(24.11.14)
64) ์ฐ๋๋ณ ๋์ฅ๊ท ํฌ๊ธฐ์ ํธ์ฐจ ๊ตฌํ๊ธฐ
1
2
3
4
5
SELECT YEAR(DIFFERENTIATION_DATE) AS 'YEAR',
MAX(SIZE_OF_COLONY) OVER(PARTITION BY YEAR(DIFFERENTIATION_DATE)) - SIZE_OF_COLONY AS 'YEAR_DEV',
ID
FROM ECOLI_DATA
ORDER BY YEAR ASC, YEAR_DEV ASC;
OVER(PARTITION BY YEAR(DIFFERENTIATION_DATE))
: ๊ฐ ์ฐ๋๋ฅผ ๊ธฐ์ค์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ๊ทธ๋ฃนํ ํจ. -> 2019, 2020, 2021 ๋ฑMAX(SIZE_OF_COLONY) OVER(PARTITION BY YEAR(DIFFERENTIATION_DATE)) - SIZE_OF_COLONY
: ๊ฐ ๊ทธ๋ฃน ๋ด์์SIZE_OF_COLONY
์ ์ต๋๊ฐ์ ๊ตฌํ ๋ค,SIZE_OF_COLONY
๋ก ๋นผ๊ธฐ.
65) ๋ถ๋ชจ์ ํ์ง์ ๋ชจ๋ ๊ฐ์ง๋ ๋์ฅ๊ท ์ฐพ๊ธฐ
1
2
3
4
5
6
7
SELECT A.ID, A.GENOTYPE AS 'GENOTYPE', B.GENOTYPE AS 'PARENT_GENOTYPE'
FROM ECOLI_DATA A
JOIN ECOLI_DATA B ON A.PARENT_ID = B.ID
WHERE (A.GENOTYPE & B.GENOTYPE) = B.GENOTYPE
ORDER BY A.ID ASC;
# A : ์์๊ฐ์ฒด, B : ๋ถ๋ชจ ๊ฐ์ฒด
๋์ฅ๊ท ๊ฐ์ฒด์ ํ์ง์ 2์ง์ ๋นํธ๋ก ์ทจ๊ธํ์ฌ ๋ถ๋ชจ ๊ฐ์ฒด๋ก๋ถํฐ ์ ์ ๋ ํ์ง์ ์์ ๊ฐ์ฒด๊ฐ ๋ชจ๋ ๋ณด์ ํ๊ณ ์๋์ง ํ์ธ
ID
: ๋์ฅ๊ท ๊ฐ์ฒด์ ๊ณ ์ ID.PARENT_ID
: ๋ถ๋ชจ ๋์ฅ๊ท ๊ฐ์ฒด์ ID (์ต์ด ๊ฐ์ฒด์ ๊ฒฝ์ฐNULL
).SIZE_OF_COLONY
: ๋์ฅ๊ท ์ ํฌ๊ธฐ(์ด๋ฒ ๋ฌธ์ ์๋ ๊ด๋ จ์ด ์์ต๋๋ค).DIFFERENTIATION_DATE
: ๋์ฅ๊ท ์ด ๋ถํ๋ ๋ ์ง.GENOTYPE
: ๋์ฅ๊ท ์ ํ์ง(์ ์ ๊ฐ์ผ๋ก ์ฃผ์ด์ง).
ํ์ง์ GENOTYPE = 5๋ผ๋ฉด 2์ง์๋ก 101
์ด๋ฉฐ ์ด๋ 1๋ฒ๊ณผ 3๋ฒ์ ํ์ง์ ๊ฐ์ง๋ค๋ ๊ฒ์ ์๋ฏธํจ.
GENOTYPE = 8์ด๋ผ๋ฉด 2์ง์ 1000
์ผ๋ก ์ด๋ 4๋ฒ ํ์ง์ ๊ฐ์ง๋ค๋ ๊ฒ์ ์๋ฏธ
๋ฌธ์ ์๊ตฌ์ฌํญ -> ์์ ๊ฐ์ฒด๊ฐ ๋ถ๋ชจ ๊ฐ์ฒด์ ๋ชจ๋ ํ์ง์ ๋ณด์ ํ๊ณ ์์ ๋, ํด๋น ์์ ๊ฐ์ฒด์ ์ ๋ณด๋ฅผ ์ถ๋ ฅํด์ผ ํจ. ์ฆ, ๋ถ๋ชจ ๊ฐ์ฒด์ ํ์ง์ด ์์ ๊ฐ์ฒด์ ํ์ง์ ํฌํจ๋๋ ๊ฒฝ์ฐ๋ฅผ ์ฐพ๋ ๊ฒ.
-> ๋ถ๋ชจ GENOTYPE = 1
, ์์ GENOTYPE = 3
์ธ ๊ฒฝ์ฐ, 3 & 1 = 1
์ด๋ฏ๋ก ์์์ ๋ถ๋ชจ์ ํ์ง์ ๋ชจ๋ ๋ณด์ ํ๊ณ ์์.
ON A.PARENT_ID = B.ID
: ์์ ๊ฐ์ฒด(A
)์ PARENT_ID
์ ๋ถ๋ชจ ๊ฐ์ฒด(B
)์ ID
๋ฅผ ์ฐ๊ฒฐํด, ๋ถ๋ชจ-์์ ๊ด๊ณ๋ฅผ ํ์ฑํจ.