[SQL] 잡은 물고기의 평균 길이 구하기

하나·2025년 1월 6일
0

SQL TEST

목록 보기
5/9
post-thumbnail

🪄문제 분석 요약

FISH_INFO 테이블에서 잡은 물고기의 평균 길이 출력

  • 평균 길이를 나타내는 컬럼명은 AVERAGE_LENGTH
  • 평균 길이는 소수접 3째자리에서 반올림, 10cm이하의 물고기들은 10cm로 취급하여 평균 길이 구함
  • 1Ocm 이하의 물고기는 LENGTH=NULL로 처리됨.

🪄접근법

  • LENGTH컬럼에서 NULL이 있는 경우 10으로 치환한다.
  • 치환 후 AVG로 평균 구한 후 ROUND로 소수점 3째자리에서 반올림한다.
  • 컬럼명 적합하게 변환한다!

🪄SQL

SELECT ROUND(AVG(IFNULL(LENGTH, 10)), 2) AS AVERAGE_LENGTH
FROM FISH_INFO;

🪄틀린 부분 수정 OR 다른 풀이

  • 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로 유지

🪄관련 개념

IFNULL

  • 해당 컬럼값이 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이 아닌 경우 기존 컬럼값을 출력한다.

CASE

  • 조건식을 통해 TRUE, FALSE를 판단하여 조건에 맞게 컬럼값을 반환한다.
SELECT
	CASE
       WHEN `COLUMN` IS NULL THEN 'A'
       ELSE `COLUMN`
    END AS `COLUMN`
FROM 테이블명;

💡 COLUMN값이 NULL인 경우 A, NULL이 아닌 경우 COLUMN값을 그대로 반환한다. 그 후 COLUMN의 컬럼명을 COLUMN으로 지정한다.

profile
Start with hello world:)

0개의 댓글

관련 채용 정보