CASE (Searched)
CASE 문은 하나 이상의 조건을 평가해 첫 번째 조건이 충족되면 결과를 반환하고, 조건이 하나도 충족되지 않으면 기본 결과를 반환합니다.
IF도 참고하세요.
사용 예시
CASE의 일반적인 용도는 데이터의 새 카테고리 또는 그룹을 만드는 것입니다. 예를 들어 선택된 국가 값을 영업 지역 측정기준으로 그룹화하려면 다음과 같이 CASE 문을 작성합니다.
CASE
WHEN Country IN ("USA","Canada","Mexico") THEN "North America"
WHEN Country IN ("England","France") THEN "Europe"
ELSE "Other"
END
구문
CASE
WHEN condition THEN result
[WHEN condition THEN result]
[...]
[ELSE else_result]
END
매개변수
condition- 논리 필드 또는 표현식.WHEN절은condition을 평가하고 지정된 조건이 충족되면 true를, 충족되지 않으면 false를 반환합니다.result- 모든 유형의 필드 또는 표현식. 각WHEN절마다 일치하는THEN절이 있어야 해당WHEN condition이 참인 경우의 결과가 지정됩니다.WHEN절이 여러 개 있는 경우CASE문은 첫 번째 참condition에 대한result를 반환합니다.else_result(선택사항) - 모든 유형의 필드 또는 표현식.ELSEelse_result절은CASE문의 기본 결과를 지정합니다. 이 절은WHEN절 중 참인 절이 없는 경우 반환됩니다.CASE문에ELSE절이 없고WHEN절 중 참인 절이 없으면CASE문은NULL을 반환합니다.
CASE 문에는 ELSE 절이 하나만 있을 수 있습니다.
검색된 CASE의 작동 방식
검색된 CASE 문은 CASE 키워드로 시작하고 END 키워드로 끝납니다. 그 사이에는 다음과 같은 여러 섹션이나 절이 있습니다.
WHEN: 평가할 조건입니다. 하나의CASE문에 여러WHEN절이 포함될 수 있습니다.THEN:WHEN절의 조건이 참인 경우 반환되는 결과.CASE문의 각WHEN절에는THEN절이 하나씩 있어야 합니다.ELSE: 선택사항.WHEN절 조건 중 참인 조건이 없으면CASE는ELSE절로 값을 반환하며,ELSE절을 지정하지 않았다면NULL을 반환합니다.
CASE는 연속된 각 WHEN 절을 평가하고 조건이 참인 첫 번째 결과를 반환합니다. 나머지 WHEN 절과 ELSE 결과는 평가되지 않습니다. 모든 WHEN 조건이 거짓이거나 NULL이면 CASE는 ELSE 결과를 반환하고, ELSE 절이 없는 경우 NULL을 반환합니다.
예시
불일치 관계 확인
CASE WHEN Medium != "cpc" THEN "free" ELSE "paid" END
숫자 측정기준 값을 개별 버킷으로 분류합니다.
예를 들어 주문 금액에 따라 다음과 같이 주문을 'Small', 'Medium', 'Large'로 구분할 수 있습니다.
CASE
WHEN Amount < 20 THEN "Small"
WHEN Amount >= 20 and Amount < 100 THEN "Medium"
WHEN Amount >= 100 THEN "Large"
END
날짜 측정기준 값을 개별 버킷으로 분류합니다.
예를 들어 특정 날짜를 기준으로 연도를 학기로 구분할 수 있습니다.
CASE
WHEN Date >= DATE(2018, 9, 23) and Date < DATE(2018, 12, 13) THEN "Fall Semester 2018"
WHEN Date >= DATE(2018, 1, 3) and Date < DATE(2019, 3, 21) THEN "Winter Semester 2019"
WHEN Date >= DATE(2019, 3, 27) and Date < DATE(2019, 6, 12) THEN "Spring Semester 2019"
ELSE "Uncategorized"
END
논리 조건 AND 평가
CASE
WHEN Country ISO Code = "US" AND Medium = "cpc"
THEN "US - Paid"
ELSE "other"
END
논리 조건 AND/OR 평가
CASE
WHEN REGEXP_MATCH(Video Title, ".*Google Analytics*")
AND is_livestream = TRUE
OR Video Length > 600
THEN "GA Livestream or long video"
END
파라미터 값에 따라 다른 필드 또는 값이 반환됩니다.
예 1: 선택된 파라미터 값을 기준으로 측정기준이 반환됩니다. 이 기법을 사용하면 사용자가 차트에 사용된 세부 측정기준을 전환할 수 있습니다.
CASE
WHEN Breakdown = "Product Category" THEN Product Category
WHEN Breakdown = "Store" THEN Store
END
CASE Breakdown
WHEN "Product Category" THEN Product Category
WHEN "Store" THEN Store
END
예 2: 파라미터 값에 따라 다른 측정항목을 반환합니다.
CASE WHEN Show Adjusted Cost = TRUE THEN Cost + Adjustments ELSE Cost END
중첩된 CASE 문
CASE 문을 중첩하여 더 복잡한 분기 로직을 만들 수 있습니다.
CASE WHEN REGEXP_CONTAINS(SKU, "Hats") THEN
CASE WHEN Color = "blue"
THEN "BLUE HAT" ELSE "JUST A HAT"
END
ELSE "NOT A HAT"
END