์ ์ฒด ๊ธ (74) ์ธ๋ค์ผํ ๋ฆฌ์คํธํ [programmers] 5์ ์ํ๋ค์ ์ด๋งค์ถ ์กฐํํ๊ธฐ ๋ฌธ์ FOOD_PRODUCT์ FOOD_ORDER ํ ์ด๋ธ์์ ์์ฐ์ผ์๊ฐ 2022๋ 5์์ธ ์ํ๋ค์ ์ํ ID, ์ํ ์ด๋ฆ, ์ด๋งค์ถ์ ์กฐํํ๋ SQL๋ฌธ์ ์์ฑํด์ฃผ์ธ์. ์ด๋ ๊ฒฐ๊ณผ๋ ์ด๋งค์ถ์ ๊ธฐ์ค์ผ๋ก ๋ด๋ฆผ์ฐจ์ ์ ๋ ฌํด์ฃผ์๊ณ ์ด๋งค์ถ์ด ๊ฐ๋ค๋ฉด ์ํ ID๋ฅผ ๊ธฐ์ค์ผ๋ก ์ค๋ฆ์ฐจ์ ์ ๋ ฌํด์ฃผ์ธ์. ํ์ด - ๋ ๊ฐ์ ํ ์ด๋ธ์์ ์ํ๋ ํ๋๋ฅผ ๊ฐ์ ธ์ค๊ธฐ ์ํด JOIN ์ฌ์ฉ - ์ด๋งค์ถ์ SUM() ์ ์ฌ์ฉ(์๋*๊ฐ๊ฒฉ) - GROUP BY ๋ฅผ ์ฌ์ฉํด ID ๋ณ ํฉ๊ณ๋ฅผ ๊ตฌํจ - 2022-04-04 ํํ์ ๋ฐ์ดํฐ์์ ์ฐ๋์ ์๋ง ๋น๊ตํ๊ธฐ ์ํด YEAR(), MONTH() ์ฌ์ฉ - ORDER BY ๋ก ์ ๋ ฌ SELECT A.PRODUCT_ID, B.PRODUCT_NAME, (SUM(A.AMOUNT) * B.PRICE) AS TOTAL_SAL.. [์ ๋ณด์ฒ๋ฆฌ๊ธฐ์ฌ] C์ธ์ด ๋ฌธ์ ํ์ด(5) ์คํ ์์ if ๋ฌธ์ ์กฐ๊ฑด์์ด ์ฐธ์ผ ๋ ์คํ. C ์ธ์ด๋ 0์ด๋ฉด ๊ฑฐ์ง, 0์ด ์๋๋ฉด ์ฐธ if(-1) ์์ -1 ์ ์ฐธ(true)์ด๋ฏ๋ก printf(”A”) ์ถ๋ ฅ; ๊ทธ ์ธ ์กฐ๊ฑด๋ค(else if, else) ์ ํด๋น์ฌํญ ์์ผ๋ฏ๋ก skip printf(”D”) ์ถ๋ ฅ ์ถ๋ ฅ AD [์ ๋ณด์ฒ๋ฆฌ๊ธฐ์ฌ] C์ธ์ด ๋ฌธ์ ํ์ด(4) - ์ฌ๊ทํจ์ ์คํ ์์ main ํจ์๋ถํฐ ์คํ fn(3) ์ด๋ฏ๋ก int n = 3 printf ์ ์ํด 3 ์ถ๋ ฅ if ๋ฌธ ์คํ, ์กฐ๊ฑด์ด ์ฐธ(3>1) ์ด๋ฏ๋ก, fn(2) ํธ์ถ fn(2) ์ด๋ฏ๋ก printf ์ ์ํด 2 ์ถ๋ ฅ if ๋ฌธ ์คํ, ์กฐ๊ฑด์ด ์ฐธ(2>1) ์ด๋ฏ๋ก, fn(1) ํธ์ถ fn(1) ์ด๋ฏ๋ก printf ์ ์ํด 1 ์ถ๋ ฅ if ๋ฌธ ์คํ, ์กฐ๊ฑด์ด ๊ฑฐ์ง(1>1) ์ด๋ฏ๋ก ์๋ printf์ ์ํด 1 ์ถ๋ ฅ fn(1)์ ํธ์ถํ๋ ๋ถ๋ถ์ผ๋ก ๋์๊ฐ ์๋ printf์ ์ํด 2 ์ถ๋ ฅ fn(2)์ ํธ์ถํ๋ ๋ถ๋ถ์ผ๋ก ๋์๊ฐ ์๋ printf์ ์ํด 3 ์ถ๋ ฅ fn(3) ์ผ๋ก ๋์๊ฐ์ง๋ง, ์ดํ ๋ช ๋ น์ด ์์ผ๋ฏ๋ก ์ข ๋ฃ. ์ถ๋ ฅ 321123 [์ ๋ณด์ฒ๋ฆฌ๊ธฐ์ฌ] C์ธ์ด ๋ฌธ์ ํ์ด(3) ์คํ ์์ a = 1, i= ์ด๊ธฐ๊ฐ, sum = 0์ผ๋ก ์ด๊ธฐํ switch ๋ฌธ์์, a++ ์ผ๋๋ a๋ฅผ ๋จผ์ ์ฌ์ฉํ๊ณ ๊ฐ์ 1 ์ฆ๊ฐ ์ํด → 1 ๊ฐ์ ๋จผ์ ์ฌ์ฉํ๊ณ ์ฐ์ฐ์ด ๋๋ ํ 1 ์ฆ๊ฐ ++sum, 1 ์ฆ๊ฐ๋ฅผ ๋จผ์ ์ํค๊ณ ๊ฐ ์ฌ์ฉ → 0 ๊ฐ์ +1 ์ ํ 1์ด sum ๊ฐ์ด ๋จ. ⇒ ‘a++’(1) + ‘++sum’(1) = 2 ๊ฐ ๋จ ํ์ฌ a: 2 , sum: 1 case 2: ์ ํด๋นํ๋ฏ๋ก for ๋ฌธ ์คํ i=1, for ๋ฌธ์ ์กฐ๊ฑด์(i [์ ๋ณด์ฒ๋ฆฌ๊ธฐ์ฌ] C์ธ์ด ๋ฌธ์ ํ์ด(2) ์คํ ์์ ๋ฐ๋ณต๋ฌธ sum += *(p+i) ๋ฅผ ์คํํ๊ธฐ ์ํด์๋ p ๊ฐ์ ์์์ผํจ p = a[0] ์ด๋ผ๊ณ ๊ธฐ์ ์ธํ์ผ๋ฏ๋ก, sum += *(a[0]+i) ๊ณผ ๊ฐ์ → ๊ทธ๋ ๋ค๋ฉด *(a[0]+i) ๋? ๋ฐฐ์ด + i == &๋ฐฐ์ด[i] a[0] + i == &a[0] *(a[0]+i) ๋ *( &a[0]) ๋ผ๊ณ ํ ์ ์์ ⇒ ํฌ์ธํฐ์์ ์ฃผ์๊ฐ์ ๋ํ๋ด๋ ๊ฒ๊ณผ(&) ๊ทธ ์ฃผ์๊ฐ์ ๊ฐ๋ฆฌํค๋ ๊ฒ(*)์ ์๋ก ์์๋์ด ์์ด์ง ⇒ a[0][i] ๊ฐ ๋๋ค. ⇒ a[0][0]์ 2์ด๋ฏ๋ก sum ์ 2 ๋ค์ for ๋ฌธ์ผ๋ก ๋์์์ i = 1, a[0][1]์ 3, sum ์ 5 ๋ค์ for ๋ฌธ์ผ๋ก ๋์์์ i = 2, a[0][2]๋ 5, sum ์ 10 ** a[0][2] ๋ a[1][0] ์ ์๋ฏธํ๋ค. ๋ค์ for ๋ฌธ์ผ๋ก .. [์ ๋ณด์ฒ๋ฆฌ๊ธฐ์ฌ] C์ธ์ด ๋ฌธ์ ํ์ด(1) tip. ๋ณ์ ๋ณํ๋ฅผ ์๊ธฐ ์ํด ๋ฉ๋ชจ๋ฆฌ ๊ตฌ์กฐ๋ฅผ ๊ทธ๋ ค๋๊ณ ์์ ์คํ ์์ i = 0, j=0, k ๋ ์ด๊ธฐํ ์๋ต๋์ด ์์ด ์ฐ๋ ๊ธฐ ๊ฐ i=0 ์ฒซ ๋ฒ์งธ, for๋ฌธ ์ด๊ธฐ์์ด ์๋ต๋์ด์์ → ๋ค์ ์กฐ๊ฑด์ผ๋ก ๋ฐ๋ก ๋์ด๊ฐ ๋ ๋ฒ์งธ for ๋ฌธ i = 0, j=0 ์ธ ๋ฒ์งธ for ๋ฌธ k =’A’ → ์์ ๋ฐ์ดํ A ๋ ๋ฌธ์, ๋ฌธ์๋ ์์คํค์ฝ๋๋ก ๋งคํํด์ ์ซ์์ฒ๋ผ ์ฌ์ฉ ๊ฐ๋ฅ A = 65 ์กฐ๊ฑด๋ฌธ์ด ์ฐธ์ด๋ฏ๋ก, printf ์คํ 4. printf ๋ฌธ %c ๋ ํฌ๋งท์คํธ๋ง ์ค ๋ฌธ์๋ฅผ ์ถ๋ ฅํ ๋ ์ฌ์ฉ, i + j + k = 0+ 0+ 65 ์ด๋ฏ๋ก ์์คํค์ฝ๋ 65 ์ ํด๋นํ๋ ๋ฌธ์ A ๋ฅผ ์ถ๋ ฅ 5. ์ธ ๋ฒ์งธ ๋ฐ๋ณต๋ฌธ์ผ๋ก ๋์๊ฐ k++ ์ด๋ฏ๋ก k ๊ฐ์ 66 ์ด ๋์ด ์กฐ๊ฑด๋ฌธ false ๊ฐ ๋จ → false ์ผ ๋ ๋ก์ง์ด ์์ด ์์ for.. [programmers] ์์๋๋ฐ์ ์์์ต๋๋ค ๋ฌธ์ ๋ณดํธ ์์์ผ๋ณด๋ค ์ ์์ผ์ด ๋ ๋น ๋ฅธ ๋๋ฌผ์ ์์ด๋์ ์ด๋ฆ์ ์กฐํํ๋ SQL๋ฌธ์ ์์ฑํด์ฃผ์ธ์. ์ด๋ ๊ฒฐ๊ณผ๋ ๋ณดํธ ์์์ผ์ด ๋น ๋ฅธ ์์ผ๋ก ์กฐํํด์ผํฉ๋๋ค. ํ์ด - ๋ ๊ฐ์ ํ ์ด๋ธ์์ ์ํ๋ ํ๋๋ฅผ ๊ฐ์ ธ์ค๊ธฐ ์ํด JOIN(INNER JOIN) ์ฌ์ฉ - DATETIME ์ ๋น๊ต(๋ ์ง๋ ์ฐ์ฐ์๋ก ๋น๊ต ๊ฐ๋ฅ) - ์ ๋ ฌ SELECT INS.ANIMAL_ID, INS.NAME FROM ANIMAL_INS INS INNER JOIN ANIMAL_OUTS OUTS ON INS.ANIMAL_ID = OUTS.ANIMAL_ID WHERE INS.DATETIME > OUTS.DATETIME ORDER BY INS.DATETIME ํ๋ก๊ทธ๋๋จธ์ค ์ฝ๋ ์ค์ฌ์ ๊ฐ๋ฐ์ ์ฑ์ฉ. ์คํ ๊ธฐ๋ฐ์ ํฌ์ง์ ๋งค์นญ. ํ๋ก๊ทธ๋๋จธ์ค์ ๊ฐ๋ฐ์ ๋ง์ถคํ ํ.. [programmers] ์์ด์ง ๊ธฐ๋ก ์ฐพ๊ธฐ ๋ฌธ์ ์ฒ์ฌ์ง๋ณ์ผ๋ก ์ธํด ์ผ๋ถ ๋ฐ์ดํฐ๊ฐ ์ ์ค๋์์ต๋๋ค. ์ ์์ ๊ฐ ๊ธฐ๋ก์ ์๋๋ฐ, ๋ณดํธ์์ ๋ค์ด์จ ๊ธฐ๋ก์ด ์๋ ๋๋ฌผ์ ID์ ์ด๋ฆ์ ID ์์ผ๋ก ์กฐํํ๋ SQL๋ฌธ์ ์์ฑํด์ฃผ์ธ์. ํ์ด - ๋ ํ ์ด๋ธ์ ๋น๊ตํด ํ ์ชฝ์๋ง ์๋ ๋ฐ์ดํฐ๋ฅผ ์กฐํํ๊ธฐ ์ํด LEFT OUTER JOIN ์ฌ์ฉ - IS NULL ์ ์ฌ์ฉํ์ฌ ID ๊ฐ ์๋ ๊ฐ๋ง ์กฐํ - ID ๋ฅผ ๊ธฐ์ค์ผ๋ก ์ ๋ ฌ SELECT OUTS.ANIMAL_ID, OUTS.NAME FROM ANIMAL_OUTS OUTS LEFT JOIN ANIMAL_INS INS ON OUTS.ANIMAL_ID = INS.ANIMAL_ID WHERE INS.ANIMAL_ID IS NULL ORDER BY OUTS.ANIMAL_ID; ํ๋ก๊ทธ๋๋จธ์ค ์ฝ๋ ์ค์ฌ์ ๊ฐ๋ฐ์ ์ฑ์ฉ. ์คํ ๊ธฐ๋ฐ์ .. ์ด์ 1 2 3 4 ยทยทยท 10 ๋ค์