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 문법으로 작성할 수도 있습니다.
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