프로그래머스_SQL_집합연산자와 CASE구문 정리

HEE·2025년 3월 11일
0

프로그래머스 SQL

목록 보기
6/13
post-thumbnail

프로그래머스 SQL 고득점 KIT 내 IS NULL 문제

Level 1. 잡은 물고기의 평균 길이 구하기.

잡은 물고기의 평균 길이를 출력하는 SQL문을 작성해주세요.

평균 길이를 나타내는 컬럼 명은 AVERAGE_LENGTH로 해주세요.
평균 길이는 소수점 3째자리에서 반올림하며, 10cm 이하의 물고기들은 10cm 로 취급하여 평균 길이를 구해주세요.

사용할 함수 정하기

  • MY SQL이 주력이라면 IFIFNULL을 사용한다면 좀 더 간단하게 할 수 있을 것이다.
  • 나는 오라클밖에 배운적이 없어서 MY SQL과 오라클 공통으로 사용 가능한 CASE 구문을 사용하겠다.

MY SQL & 오라클 - 공통구문 CASE 사용

SELECT ROUND(AVG
             (CASE
             WHEN LENGTH IS NULL 
             THEN 10 
             ELSE ROUND(LENGTH,2)
             END),2)
       AS AVERAGE_LENGTH
FROM FISH_INFO ;

CASE 구문 정리 (CASE 다음 무엇이 오는가)

  • CASE WHEN ---
  • CASE 컬럼명 WHEN 값 THEN ---

단순 CASE (CASE WHEN - 다양한 조건 가능)

SELECT ITEM_NAME,
       CASE 
           WHEN PRICE >= 10000 THEN 'Expensive'
           WHEN PRICE BETWEEN 5000 AND 9999 THEN 'Medium'
           ELSE 'Cheap'
       END AS PRICE_CATEGORY
FROM ITEM_INFO;
  • 여러 조건을 비교할때 사용.
  • 가장 유연하게 사용할 수 있음!

CASE 컬럼명 WHEN 값 THEN - 특정값 비교

SELECT ITEM_NAME,
       CASE PRICE
           WHEN 10000 THEN 'Expensive'
           WHEN 5000 THEN 'Medium'
           ELSE 'Cheap'
       END AS PRICE_CATEGORY
FROM ITEM_INFO;
  • 특정 값과 일치하는지 체크!
  • BETWEEN > 비교연산자 불가.
    (WHEN PRICE >= 1000 같은 비교 불가능!)
profile
ALL IS WELL

0개의 댓글