1. ๋ฌธ์ ์ค๋ช ๐
(1) ๋งํฌ๐
(2) ํด์ค๐ต
KEY WORD
: ๋ฌธ์์ด ํฉ์น๊ธฐ
, ์ง๊ณ ํจ์
cm
๋ฅผ ๊ธธ์ด์ ํฉ์น๊ธฐ ์ํดCONCAT()
ํจ์ ํ์ฉmax()
์ง๊ณ ํจ์ ํ์ฉ
2. ๊ตฌํ ์ฝ๋ ๐
SELECT CONCAT(max(f.LENGTH), 'cm') as MAX_LENGTH
FROM FISH_INFO f
3. DRILING ๐ฏ
(1) MAX() ์ง๊ณํจ์์ ๋ด๋ถ ์๋ ์๋ฆฌ
// ์ด๊ธฐํ
int maxValue = NULL;
for (int i = 0; i < rowCount; i++) {
// currentRowValue๋ i๋ฒ์งธ row์ length ๊ฐ (ex: f.LENGTH)
int currentRowValue = getValueFromRow(i, "length");
// NULL ๋ฌด์
if (currentRowValue == NULL) {
continue;
}
// ์ฒซ ๊ฐ์ ๋ฌด์กฐ๊ฑด ์ธํ
if (maxValue == NULL || currentRowValue > maxValue) {
maxValue = currentRowValue;
}
}
return maxValue;
์ด๋ ๊ฒ ํ ํ๋์ฉ ๋น๊ตํ๋ฉฐ MAX ๊ฐ์ ์ฐพ๋ ๊ตฌ์กฐ๋ฅผ ** **1-pass linear scan์ด๋ผ ๋ถ๋ฅธ๋ค.
(2) CONCAT(A,B,C...) ๋ด๋ถ์ ์๋ ์๋ฆฌ
ํด๋น ํจ์๋ ์ฝ๋ฉ ์ธ์ด์์์ ๋ง์ฐฌ๊ฐ์ง๋ก ์ธ์ ๋ด๋ถ์ ๋ฌธ์์ด์ ์ด์ด ๋ถ์ด๋ ํจ์์ด๋ค. ์ด๋ ๋ค์๊ณผ ๊ฐ์ด ๋์ํ๋ค.
1. ํ๋ผ๋ฏธํฐ ํ๊ฐ
ํ๋ผ๋ฏธํฐ๋ก ๋ค์ด์จ ์ธ์๋ค์ ํ๊ฐํ๋ค.
- ๊ณ์ฐ์ ๊ฑฐ์ณ์ผํ๋ ๊ฒ์ด ์๋์ง ex( ์ง๊ณํจ์ ๋ฑ)
- ํ ๋ณํ ์ฒ๋ฆฌ๊ฐ ํ์ํ ๊ฒ์ด ์๋์ง
2. SQL ๋ด๋ถ ๋ฉ๋ชจ๋ฆฌ ๋ฒํผ์์ ๋ฌธ์์ด์ ์ฐ๊ฒฐํ ์๋ก์ด ๋ฌธ์์ด ๊ฐ์ฒด ์์ฑ
- ๋ฌธ์์ด ๋ฒํผ ๋์ ์ผ๋ก ํ๋ณด
- max()๋ฌธ์์ ๋์จ ์ซ์(ex - 34)์ 'cm' ์ฐ๊ฒฐํด์ '34cm' ๋ผ๋ ์ ๋ฌธ์์ด ๊ฐ์ฒด ์์ฑํด์ ๋ฃ์ด๋์
3. (์์ธ์ฒ๋ฆฌ) ๋ง์ฝ ์ธ์ ์ค ํ๋๋ผ๋ null ์ด๋ผ๋ฉด?
๊ฑ null์ ๋ฐํํ๋ค.
SELECT CONCAT('์', '๋ฏผ') → '์๋ฏผ'
SELECT CONCAT('์', NULL) → NULL
์ฌ๊ธฐ์๋ (1) ํ๋ผ๋ฏธํฐ ํ๊ฐ, (2) MAX ํจ์ ๊ณ์ฐ, (3) ํ ๋ณํ, (4) ์ด์ด ๋ถ์ฌ์ ์๋ก์ด ๋ฌธ์์ด ๊ฐ์ฒด ์์ฑ ์ ์ฐจ๋ก ์ด๋ฃจ์ด์ง๋ค.
์ฌ๊ธฐ์ max()๋ ํ๋์ ํ๋ง ๋ฐํํ๋ฏ๋ก, CONCAT()
์ ํ๋์ ํ์ ๋ํด์๋ฐ์ ์ด๋ฃจ์ด์ง์ง ์๋๋ค.
์ด๋ชจ์ง ๋ชจ์: ๐ค, โ โจ 0๏ธโฃ1๏ธโฃ2๏ธโฃ3๏ธโฃ4๏ธโฃ5๏ธโฃ6๏ธโฃ7๏ธโฃ8๏ธโฃ9๏ธโฃ๐