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