FISH_INFO
테이블에서 잡은 물고기의 평균 길이 출력
- 평균 길이를 나타내는 컬럼명은
AVERAGE_LENGTH
- 평균 길이는 소수접 3째자리에서 반올림, 10cm이하의 물고기들은 10cm로 취급하여 평균 길이 구함
- 1Ocm 이하의 물고기는
LENGTH=NULL
로 처리됨.
LENGTH
컬럼에서 NULL이 있는 경우 10으로 치환한다.- 치환 후 AVG로 평균 구한 후 ROUND로 소수점 3째자리에서 반올림한다.
- 컬럼명 적합하게 변환한다!
SELECT ROUND(AVG(IFNULL(LENGTH, 10)), 2) AS AVERAGE_LENGTH FROM FISH_INFO;
CASE 서브 쿼리를 사용한 풀이
SELECT ROUND(AVG(LENGTH), 2) AS AVERAGE_LENGTH FROM( SELECT CASE WHEN LENGTH IS NULL THEN 10 ELSE LENGTH END AS LENGTH FROM FISH_INFO ) AS SUB
💡FROM절 서브 쿼리 활용
- CASE문으로LENGTH
컬럼의 NULL값이 있으면 10으로 반환, 반환값이 반영되는 컬럼명은LENGTH
로 유지
- 해당 컬럼값이 NULL을 반환할 때 다른 값으로 출력!
- SELECT 문에서 사용됨
SELECT IFNULL(`COLUMN명', 'NULL일 경우 대체값') FROM 테이블명;
IF 와 IS NULL의 조합으로 동일한 기능 수행 가능
SELECT(IF(IS NULL(`COLUMN명`, 'A', 'B') FROM 테이블명;
💡
COLUMN
명이 NULL인 경우 A, NULL이 아닌 경우 B 반환
MSSQL에서 ISNULL
SELECT ISNULL(`COLUMN명`, '대체값') FROM 테이블명;
💡
COLUMN
명이 NULL인 경우 대체값, NULL이 아닌 경우 기존 컬럼값을 출력한다.
- 조건식을 통해 TRUE, FALSE를 판단하여 조건에 맞게 컬럼값을 반환한다.
SELECT CASE WHEN `COLUMN` IS NULL THEN 'A' ELSE `COLUMN` END AS `COLUMN` FROM 테이블명;
💡
COLUMN
값이 NULL인 경우 A, NULL이 아닌 경우COLUMN
값을 그대로 반환한다. 그 후COLUMN
의 컬럼명을COLUMN
으로 지정한다.