1. ๋ฌธ์ ์ค๋ช ๐
(1) ๋งํฌ๐
(2) ํด์ค๐ต
KEY WORD
: CASE-WHEN ๋ถ๊ธฐ๋ฌธ
, AVG ์ง๊ณํจ์
, ROUND() ์ํ๋ ์ง์ ์์ ์์์ ๋ฐ์ฌ๋ฆผ
- NULL ์ธ ๋ ์๋ค์ ๋ํ ์์ธ ์ฒ๋ฆฌ๊ฐ ํ์ํ๋ค. -> AVG๋ null ๊ฐ์ ์ ์ธํ๊ณ ํ๊ท ๋ด๊ธฐ ๋๋ฌธ์, Null์ ์ ๋ถ 10์ผ๋ก ๋ฐ๊ฟ์ฃผ์ง ์์ผ๋ฉด, ๊ณ์ฐ์ด ์ ๋๋ก ๋์ง ์๋๋ค.
- AVG()๋ DEFAULT๋ก ์๋ฆฟ์๋ฅผ 6๊ฐ ๊น์ง ๊ฐ์ ธ์จ๋ค. ์ฌ๊ธฐ์ ROUND๋ฅผ ์ด์ฉํด ์ํ๋ ๊ณณ์์ ์์์ ๋ฐ์ฌ๋ฆผ์ ํด์ผํ๋ค.
2. ๊ตฌํ ์ฝ๋ ๐
SELECT
ROUND( AVG(
CASE
WHEN f.LENGTH IS NULL THEN 10
ELSE f.LENGTH
END
),2
) AS AVERAGE_LENGTH
FROM FISH_INFO f;
3. DRILING ๐ฏ
(1) CASE WHEN THEN ๋ฌธ์ ๋ํ์ฌ
SELECT
CASE
WHEN(์กฐ๊ฑดA) THEN A
WHEN(์กฐ๊ฑดB) THEN B
ELSE C
END AS ์ํ๋ ์ปฌ๋ผ๋ช
FROM TABLE
;
A. THEN์ ์ ํ ๋ฐํ๊ฐ์ WHEN์์ ์ ์ํ ์ปฌ๋ผ์ ๋ด์ฉ๋ฌผ๋ก ๋ฐ๋ก ์ฐ์ธ๋ค?
NO!
SELECT ๋ฌธ ์์ ์ ํ CASE WHEN THEN๋ฌธ์ ๊ทธ ๊ฐ์ผ๋ก ๊ณ ์ ์ ์ด์ด ์์ฑ๋์ด ๋ฐํ๋๋ค. ๋ง์ฝ Alias ์ค์ ์ ํด๋์ง ์์ผ๋ฉด,
์ด์ ๊ฐ์ด CASE ๋ฌธ ์ ์ฒด๋ก ํ๋์ ์ด์ด ์์ฑ๋์ด ๋ฐํ๋๋ ๊ฒ์ด๋ค. ๋ฐ๋ผ์ CASE ๋ฌธ ์์ ๋ด์ฉ๋ฌผ์ด ์ปฌ๋ผ์ ๋ด์ฉ์ผ๋ก ์ฐ์ด์ง๋ ์๋๋ค!
B. ELSE์ END๋ ํ์์ผ๊น?
๋ ๋ค ํ์!
ELSE ๋ฌธ์ด ์์ผ๋ฉด WHEN, THEN
๋ถ๊ธฐ๋ฌธ์ ๋น ์ ธ๋๊ฐ ๋ชจ๋ ๋ฌธ์ฅ์ NULL๋ก ํ๊ธฐ๋๋ค.
END๋ MySQL์์ ํ์ ์ด๋ค. ์์ผ๋ฉด Syntax ์ค๋ฅ๊ฐ ๋๋ค.
(2) ROUND(A, ์ซ์) ์ ๊ดํ์ฌ
๋ ๋ฒ์งธ ์ธ์ ์ซ์๋ ์ด์๋จ์ ์์์ ์ ๊ฐ์์ด๋ค. ํด๋น ๋ฌธ์ ์์๋ 3๋ฒ์งธ ์๋ฆฌ์์ ๋ฐ์ฌ๋ฆผ ํ๋ผ๊ณ ํ์ผ๋ฏ๋ก ์ค์ ์ด์๋จ๋ ์์์ ์๋ฆฌ์๋ 2๊ฐ๊ฐ ๋๋ค. ๋ฐ๋ผ์ ROUND(A,2)
๋ก ์ค์ ํ๋ค.
์ด๋ชจ์ง ๋ชจ์: ๐ค, โ โจ 0๏ธโฃ1๏ธโฃ2๏ธโฃ3๏ธโฃ4๏ธโฃ5๏ธโฃ6๏ธโฃ7๏ธโฃ8๏ธโฃ9๏ธโฃ๐