๐ข ๋ณธ ํฌ์คํ ์ ํ์ฉ๋๋ ๊ธฐ๋ณธ ๋ฌธ์ ๋ฐ ์๋ฃ ์ถ์ฒ๋
ํ๋ก๊ทธ๋๋จธ์ค ์ฝ๋ฉํ
์คํธ ์ฐ์ต,
https://school.programmers.co.kr/learn/challenges?page=1&languages=mysql%2Coracle์์ ๋ฐํ๋๋ค.
โ ๋ฌธ์
๋ฌธ์ ์ค๋ช
ANIMAL_INS ํ ์ด๋ธ์ ๋๋ฌผ ๋ณดํธ์์ ๋ค์ด์จ ๋๋ฌผ์ ์ ๋ณด๋ฅผ ๋ด์ ํ ์ด๋ธ์ ๋๋ค. ANIMAL_INS ํ ์ด๋ธ ๊ตฌ์กฐ๋ ๋ค์๊ณผ ๊ฐ์ผ๋ฉฐ, ANIMAL_ID, ANIMAL_TYPE, DATETIME, INTAKE_CONDITION, NAME, SEX_UPON_INTAKE๋ ๊ฐ๊ฐ ๋๋ฌผ์ ์์ด๋, ์๋ฌผ ์ข , ๋ณดํธ ์์์ผ, ๋ณดํธ ์์ ์ ์ํ, ์ด๋ฆ, ์ฑ๋ณ ๋ฐ ์ค์ฑํ ์ฌ๋ถ๋ฅผ ๋ํ๋ ๋๋ค.
NAME | TYPE | NULLABLE |
ANIMAL_ID | VARCHAR(N) | FALSE |
ANIMAL_TYPE | VARCHAR(N) | FALSE |
DATETIME | DATETIME | FALSE |
INTAKE_CONDITION | VARCHAR(N) | FALSE |
NAME | VARCHAR(N) | TRUE |
SEX_UPON_INTAKE | VARCHAR(N) | FALSE |
๋ฌธ์
์ ์ ๊ฒ์ํ์ ๋๋ฌผ ์ ๋ณด๋ฅผ ๊ฒ์ํ๋ ค ํฉ๋๋ค. ๋๋ฌผ์ ์๋ฌผ ์ข , ์ด๋ฆ, ์ฑ๋ณ ๋ฐ ์ค์ฑํ ์ฌ๋ถ๋ฅผ ์์ด๋ ์์ผ๋ก ์กฐํํ๋ SQL๋ฌธ์ ์์ฑํด์ฃผ์ธ์. ์ด๋ ํ๋ก๊ทธ๋๋ฐ์ ๋ชจ๋ฅด๋ ์ฌ๋๋ค์ NULL์ด๋ผ๋ ๊ธฐํธ๋ฅผ ๋ชจ๋ฅด๊ธฐ ๋๋ฌธ์, ์ด๋ฆ์ด ์๋ ๋๋ฌผ์ ์ด๋ฆ์ "No name"์ผ๋ก ํ์ํด ์ฃผ์ธ์.
โ ํ์ด
๋ฌธ์ ์๊ตฌ์ฌํญ
๋๋ฌผ์ ์๋ฌผ ์ข , ์ด๋ฆ, ์ฑ๋ณ ๋ฐ ์ค์ฑํ ์ฌ๋ถ๋ฅผ ์์ด๋ ์์ผ๋ก ์กฐํ > ์ ๋ ฌ์กฐ๊ฑด
์ด๋ฆ์ด ์๋ ๋๋ฌผ์ ์ด๋ฆ์ "No name"์ผ๋ก ํ์ > NAME์ปฌ๋ผ ๋ฐ์ดํฐ Null๊ฐ์ 'No name'์ผ๋ก ํ์
ํ์ด1) IFNULL ์ฌ์ฉ
SELECT ANIMAL_TYPE,
IFNULL(NAME, 'No name') NAME,
SEX_UPON_INTAKE
FROM ANIMAL_INS
ORDER BY ANIMAL_ID;
ํ์ด2) COALESCE ์ฌ์ฉ
SELECT ANIMAL_TYPE,
COALESCE(NAME, 'No name') NAME,
SEX_UPON_INTAKE
FROM ANIMAL_INS
ORDER BY ANIMAL_ID;
ํ์ด3) IF๋ฌธ ์ฌ์ฉ
SELECT ANIMAL_TYPE,
IF(ISNULL(NAME), 'No name', NAME) NAME,
SEX_UPON_INTAKE
FROM ANIMAL_INS
ORDER BY ANIMAL_ID;
SQL NULL๊ฐ(๊ฒฐ์ธก์น) ๋์ฒด ๋ฌธ๋ฒ 3๊ฐ์ง
IFNULL
IFNULL(์ปฌ๋ผ๋ช
, "Null์ผ ๊ฒฝ์ฐ ๋์ฒด ๊ฐ")
CASE๋ฌธ
CASE WHEN ์กฐ๊ฑด์1 THEN ์1
WHEN ์กฐ๊ฑด์2 THEN ์2
...
ELSE ์กฐ๊ฑด์ ๋ง๋ ๊ฒฝ์ฐ๊ฐ ์์ ๊ฒฝ์ฐ ์คํํ ์
END
COALESCE
: ์ง์ ํ ํํ ์ค NULL์ด ์๋ ์ฒซ ๋ฒ์งธ ๊ฐ์ ๋ฐํ
COALESCE(VALUE, VALUE2, ...)
๊ทธ ์ธ IF๋ฌธ๋ ์ฌ์ฉ ๊ฐ๋ฅํ๋ค.
IF(์กฐ๊ฑด, ์ฐธ์ผ๋ ๊ฐ, ๊ฑฐ์ง์ผ๋ ๊ฐ)