본문 바로가기
  • BLG-ZYNGIROK-모토-꿈꾸며-배우고-나누며-이루다
ICT/SQL

SQL 문법 | 데이터 조회 및 처리 | CASE WHEN THEN ELSE END

by dazwischen 2021. 9. 20. 16:02
반응형

본 포스트에서는 조건을 설정하고 조건에 따라 데이터를 처리하고 싶을 때 사용할 수 있는 CASE에 대해서 살펴볼 것이다. 프로그래밍에서 IF절과 비슷한 기능을 하는 CASE는 데이터를 원하는 형식으로 재가공 및 분류를 할 수 있기 때문에 많이 사용되고 꼭 잘 알아야 하는 SQL문법이다.

CASE

01 CASE WHEN THEN ELSE END : 기억해야 할 전부

SQL을 다루면서 조건을 설정하고 조건에 따라 데이터를 처리할 때 기억해야 할 것은 CASE WHEN THEN END이다. 쿼리문을 어떻게 작성하는지 먼저 살펴보고 어떻게 이용하는지 이해하는 것이 좋을 것 같다.

SELECT 	COL1
	CASE COL1	WHEN <CONDITION1> THEN VAL1
       			WHEN <CONDITION2> THEN VAL2
                	ELSE VAL3
                	END AS NEW_NAME_COL1
FROM	TABLE
;

일단 CASE는 SELECT절에서 작성이 된다. COL1을 선택하는데 CASE에 따라 분류를 하겠다고 이해하면 된다. 위의 쿼리를 이해해 보자. 'COL1을 불러오는데 COL1의 값이 CONDITION1을 만족하면 VAL1을 CONDITION2를 만족하면 VAL2를 조건을 모두 만족하지 않으면 VAL3를 표기해라.' <CONDITION>에는 TRUE, FALSE를 반환할 수 있는 조건이 와야 하고 조건의 수는 원하는 만큼 작성이 가능하다. 그리고 주의할 점이 마지막에 꼭 END를 써주어야 하며 CASE절 시작부터 END가 나오는 끝까지 콤마 (,) 는 필요하지 않다. 또 새로운 값으로 정의한 값들로 이뤄진 칼럼에 이름을 만들어 주고 싶을 때 END 뒤에 AS 'NEW_NAME'을 이용해서 컬럼명을 새로 정의해줄 수 있다.

EXAMPLE

중간고사 성적표를 만들기 위해 등급 표기를 할 것이다. 90점 이상은 1등급 80점 이상은 2등급 70점 이상은 3등급 60점 이상은 4등급 그 외에는 5등급으로 표기해라.

SELECT	NAME, NOTE,
	CASE NOTE	WHEN NOTE>=90 THEN '1등급'
       			WHEN NOTE < 90 AND NOTE >= 80 THEN '2등급'
    	           	WHEN NOTE < 80 AND NOTE >= 70 THEN '3등급'
     	           	WHEN NOTE < 70 AND NOTE >= 60 THEN '4등급'
     	           	ELSE '5등급
   	             	END AS 'LEVEL'
FROM	MID_TEST
;

SUMMARY

  • 조건별로 데이터를 분류 및 표기하고 싶을 때 CASE를 SELECT절에서 사용가능하다.
  • CASE WHEN THEN ELSE END 이 것들이 기억해야 할 전부이다.
  • WHEN 절은 원하는 만큼 수를 늘릴 수 있다.
  • CASE 절 내에선 콤마를 전혀 사용하지 않는다.
반응형

댓글