조건 함수

조건 함수 (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

더 알아보기 (Learn more)