SQL CASE 문을 활용한 데이터 조건별 처리

핵심 원리:

CASE 문은 SQL에서 조건에 따라 다른 값을 반환하는 기능을 제공합니다. IF 문과 유사한 역할을 하며, 여러 조건을 평가하여 가장 먼저 일치하는 조건의 결과를 반환합니다. 이때, ELSE 절을 사용하여 어느 조건에도 일치하지 않을 경우의 기본 값을 지정할 수 있습니다.

실무에서 쓰이는 이유:

CASE 문은 다양한 조건에 따라 데이터를 필터링하거나 특정 값을 도출할 때 사용됩니다. 복잡한 조건을 가진 쿼리에서 가독성을 높이고, 데이터를 조건에 따라 동적으로 변환할 수 있어 실무에서 유용합니다.

실무에서 구체적으로 어떤 상황일 경우 사용 되는지 예상 상황 예측:

  1. 보너스 계산: 직원의 월급에 따라 보너스를 다르게 지급하는 경우.
  2. 등급 분류: 특정 점수에 따라 학생들의 성적을 등급으로 분류하는 경우.
  3. 할인 적용: 구매 금액에 따라 할인율을 다르게 적용하는 경우.
  4. 상태 변환: 데이터베이스에서 상태 코드에 따라 사용자 친화적인 상태 설명을 반환하는 경우.

연습 문제:

1. SELECT ename, job, sal, 
       CASE WHEN sal >= 3000 THEN 500 
            WHEN sal >= 2000 THEN 300 
            WHEN sal >= 1000 THEN 200 
            ELSE 0 END AS bonus 
   FROM emp 
   WHERE job IN ('SALESMAN', 'ANALYST');

연습문제 해답:

해당 쿼리는 직원의 월급(sal)에 따라 보너스 금액을 계산하여 bonus 열에 출력합니다. sal이 3000 이상이면 500, 2000 이상이면 300, 1000 이상이면 200을, 그 외에는 0을 출력합니다. 이 쿼리는 SALESMANANALYST 직책을 가진 직원들에 대해서만 동작합니다.

응용 문제:

1. SELECT ename, job, comm, 
       CASE WHEN comm IS NULL THEN 500 
            ELSE 0 END AS bonus 
   FROM emp 
   WHERE job IN ('SALESMAN', 'ANALYST');

응용문제 해답:

이 쿼리는 커미션(comm)이 없는 직원들에게 500의 보너스를 지급하고, 커미션이 있는 직원에게는 0의 보너스를 지급하는 방식으로 동작합니다. SALESMANANALYST 직책을 가진 직원들에 대해 실행됩니다.

실무 유형 문제:

1. SELECT ename, job, 
       CASE WHEN job IN ('SALESMAN', 'ANALYST') THEN 500 
            WHEN job IN ('CLERK', 'MANAGER') THEN 400 
            ELSE 0 END AS bonus 
   FROM emp;

실무 유형 문제 해답:

이 쿼리는 직원의 직업(job)에 따라 보너스를 계산합니다. SALESMANANALYST는 500, CLERKMANAGER는 400, 그 외의 직업은 0을 보너스로 지급합니다.

Posts created 411

Related Posts

Begin typing your search term above and press enter to search. Press ESC to cancel.

Back To Top