조건 함수
조건 함수 (Conditional functions)
조건 함수는 값이나 조건에 따라 결과를 다르게 내보내고 싶을 때 쓰는 함수예요. CASE, COALESCE, NULLIF 세 가지를 Amazon S3 Select에서 어떻게 쓰는지 이 페이지에서 설명해 드릴게요.
출처: 문서
본문
중대한 사항: Amazon S3 Select는 더 이상 신규 고객에게 제공되지 않아요. 기존 Amazon S3 Select 고객은 기존과 동일하게 기능을 계속 사용할 수 있어요.
Amazon S3 Select는 다음과 같은 조건 함수를 지원해요.
- CASE
- COALESCE
- NULLIF
CASE
CASE 표현식은 다른 언어에서 볼 수 있는 if/then/else 문과 비슷한 조건 표현식이에요. 여러 조건이 있을 때 어떤 결과를 반환할지를 지정하는 데 사용해요. CASE 표현식에는 simple(단순)과 searched(검색) 두 종류가 있어요.
단순 CASE 표현식에서는 표현식을 하나의 값과 비교해요. 일치하는 값을 찾으면 THEN 절에 지정된 동작을 적용하고, 일치하는 값이 없으면 ELSE 절의 동작을 적용해요.
검색 CASE 표현식에서는 각 CASE가 Boolean 표현식에 따라 평가되고, 처음 일치하는 CASE를 반환해요. WHEN 절 중에 일치하는 CASE가 없으면 ELSE 절의 동작을 반환해요.
문법
참고: 현재 Amazon S3 Select는 ORDER BY나 줄바꿈이 포함된 쿼리를 지원하지 않아요. 줄바꿈이 없는 쿼리를 사용해야 해요.
조건을 매칭하는 데 쓰는 단순 CASE 문은 다음과 같아요:
CASE expression WHEN value THEN result [WHEN...] [ELSE result] END
각 조건을 평가하는 데 쓰는 검색 CASE 문은 다음과 같아요:
CASE WHEN boolean condition THEN result [WHEN ...] [ELSE result] END
예제
참고: Amazon S3 콘솔로 다음 예제를 실행할 때 CSV 파일에 헤더 행이 있으면 "Exclude the first line of CSV data"(CSV 데이터의 첫 줄 제외)를 선택해야 해요.
예제 1: 단순 CASE 표현식으로 쿼리에서 New York City를 Big Apple로 바꾸고, 나머지 도시 이름은 other로 바꿔요.
SELECT venuecity, CASE venuecity WHEN 'New York City' THEN 'Big Apple' ELSE 'other' END FROM S3Object;
쿼리 결과:
venuecity | case
-----------------+-----------
Los Angeles | other
New York City | Big Apple
San Francisco | other
Baltimore | other
...
예제 2: 검색 CASE 표현식으로 개별 티켓 판매의 pricepaid 값에 따라 그룹 번호를 매겨요:
SELECT pricepaid, CASE WHEN CAST(pricepaid as FLOAT) < 10000 THEN 'group 1' WHEN CAST(pricepaid as FLOAT) > 10000 THEN 'group 2' ELSE 'group 3' END FROM S3Object;
쿼리 결과:
pricepaid | case
-----------+---------
12624.00 | group 2
10000.00 | group 3
10000.00 | group 3
9996.00 | group 1
9988.00 | group 1
...
COALESCE
COALESCE는 인자를 순서대로 평가해 처음 나오는 non-unknown 값, 즉 첫 번째 null 또는 missing이 아닌 값을 반환해요. 이 함수는 null과 missing 값을 전파하지 않아요.
문법
COALESCE ( expression, expression, ... )
파라미터
expression
함수가 연산하는 대상 표현식.
예제
COALESCE(1) -- 1
COALESCE(null) -- null
COALESCE(null, null) -- null
COALESCE(missing) -- null
COALESCE(missing, missing) -- null
COALESCE(1, null) -- 1
COALESCE(null, null, 1) -- 1
COALESCE(null, 'string') -- 'string'
COALESCE(missing, 1) -- 1
NULLIF
두 표현식이 주어졌을 때, NULLIF는 두 표현식이 같은 값으로 평가되면 NULL을 반환하고, 그렇지 않으면 첫 번째 표현식을 평가한 결과를 반환해요.
문법
NULLIF ( expression1, expression2 )
파라미터
expression1, expression2
함수가 연산하는 대상 표현식.
예제
NULLIF(1, 1) -- null
NULLIF(1, 2) -- 1
NULLIF(1.0, 1) -- null
NULLIF(1, '1') -- 1
NULLIF([1], [1]) -- null
NULLIF(1, NULL) -- 1
NULLIF(NULL, 1) -- null
NULLIF(null, null) -- null
NULLIF(missing, null) -- null
NULLIF(missing, missing) -- null