조건문은 데이터베이스 쿼리와 프로그래밍에서 데이터를 필터링하고 제어하는 데 사용되는 중요한 도구입니다. Google BigQuery에서는 조건문을 사용하여 데이터를 선택하고 조작하는 다양한 방법을 제공합니다. 이 챕터에서는 BigQuery에서 조건문을 활용하는 방법과 주요 조건문 함수에 대해 살펴보겠습니다.

6.1. CASE문

6.1.1. CASE문

**CASE**문은 여러 조건을 비교하고 조건에 따라 다른 결과를 반환합니다. 데이터 변환이나 분류 시 유용하게 사용됩니다. 여러 조건이 설정된 경우, 먼저 작성된 조건이 우선 적용되고 이에 해당하지 않으면 다음 조건이 적용되는 순으로 동작하기 때문에 먼저 걸러지는 조건을 앞 순서로 배치하는 것이 좋습니다. **ELSE**는 생략할 수 있고, **CASE**를 WHERE 절에서 사용할 때에는 END 뒤에 ALIAS를 사용할 수 없습니다.

CASE
		WHEN condition THEN true_value1
	  WHEN condition THEN true_value2
ELSE else_value
END 

예시 1

“employees” 테이블에서 임금이 5천만 원 미만일 경우에는 “5천 미만”, 5천만 원 이상이고 1억 원 미만일 경우에는 “5천 이상 1억 미만”, 1억 원 이상일 경우에는 “1억 이상”으로 분류하여 “job_id”와 임금 분포를 상위 10개로 제한하여 조회합니다.

SELECT
      job_id
    , salary
		,	CASE 
			    WHEN salary < 5000 THEN "5천 미만"
			    WHEN salary < 10000 THEN "5천이상 1억 미만"
		      ELSE "1억 이상"
			END AS sal_dist
FROM `HR.employees` 
LIMIT 10;

스크린샷 2023-10-17 오후 12.35.30.png

예시 2

“employees” 테이블에서 “hire_date”가 2005년부터 2008년인 데이터에서 “job_id”가 SA로 시작하는 직무를 “SA” 그룹, ST로 시작하는 직무를 “ST” 그룹, AD로 시작하는 직무를 “AD” 그룹, 그리고 나머지 직무들은 “ETC” 그룹으로 분류하여 그룹별 임금 합계를 조회합니다.

SELECT
      EXTRACT(YEAR FROM hire_date) AS year
		, CASE 
					WHEN job_id LIKE 'SA%' THEN "SA"
					WHEN job_id LIKE 'ST%' THEN "ST"
          WHEN job_id LIKE 'AD%' THEN "AD"
      ELSE "ETC"
			END AS job_group
    , SUM(salary) AS sal_sum
FROM `HR.employees` 
WHERE EXTRACT(YEAR FROM hire_date) BETWEEN 2005 AND 2008
GROUP BY year, job_group
ORDER BY sal_sum DESC;

스크린샷 2023-10-17 오후 12.37.37.png

예시 3