카테고리:

반정형 및 정형 데이터 함수 (배열/오브젝트)

ARRAY_MAX

입력 ARRAY 가 주어지면 SQL NULL이 아닌 가장 높은 값을 가진 요소를 반환합니다. 입력 ARRAY가 비어 있거나 SQL NULL 요소만 포함하는 경우 이 함수는 NULL을 반환합니다.

구문

ARRAY_MAX( <array> )

인자

array

입력은 ARRAY입니다.

반환

이 함수는 SQL NULL이 아닌 가장 높은 값을 가진 요소를 포함하는 VARIANT 를 반환합니다.

array 가 NULL이거나 비어 있거나 SQL NULL 요소만 포함하는 경우 이 함수는 NULL을 반환합니다.

사용법 노트

  • SQL NULL은 반정형 데이터의 명시적 null 값(예: JSON 데이터의 JSON null)과 구분됩니다. 가장 높은 값을 가진 요소를 식별할 때 명시적인 null 값이 고려됩니다.

  • 이 함수는 배열의 요소를 비교하여 반환할 요소를 결정합니다. 이 함수는 동일한 데이터 타입 또는 다음 데이터 타입의 요소 비교를 지원합니다.

    • NUMBER 및 FLOAT 데이터 타입의 요소입니다.

    • TIMESTAMP_LTZ 및 TIMESTAMP_TZ 데이터 타입의 요소입니다.

    배열에 다른 데이터 타입의 요소가 포함되어 있는 경우 아래 예와 같이 요소를 일반 데이터 타입으로 캐스트 하십시오.

예

다음 예에서는 ARRAY 상수 에서 가장 높은 값을 가진 요소를 포함한 VARIANT를 반환합니다.

SELECT ARRAY_MAX([20, 0, NULL, 10, NULL]);
+------------------------------------+
| ARRAY_MAX([20, 0, NULL, 10, NULL]) |
|------------------------------------|
| 20                                 |
+------------------------------------+

다음 예에서는 JSON null이 SQL NULL과 다르게 처리되는 것을 보여줍니다. array 에 JSON null이 포함된 경우 이 함수는 JSON null을 반환합니다.

SELECT ARRAY_MAX([NULL, PARSE_JSON('null'), NULL]);
+--------------------------------------------------+
| ARRAY_MAX([20, 0, PARSE_JSON('NULL'), 10, NULL]) |
|--------------------------------------------------|
| null                                             |
+--------------------------------------------------+

다음 예에서는 입력 ARRAY가 비어 있는 경우 함수가 NULL을 반환하는 것을 보여줍니다.

SELECT ARRAY_MAX([]);
+---------------+
| ARRAY_MAX([]) |
|---------------|
| NULL          |
+---------------+

다음 예에서는 입력 ARRAY에 SQL NULL만 포함된 경우 함수가 NULL을 반환하는 것을 보여줍니다.

SELECT ARRAY_MAX([NULL, NULL, NULL]);
+-------------------------+
| ARRAY_MAX([NULL, NULL]) |
|-------------------------|
| NULL                    |
+-------------------------+

다양한 데이터 타입의 요소가 포함된 배열의 최대값을 확인하려면 요소를 동일한 데이터 타입으로 캐스트 하십시오. 다음 예에서는 DATE 요소를 TIMESTAMP 요소로 캐스트하여 배열의 최대값을 확인합니다.

SELECT ARRAY_MAX([date1::TIMESTAMP, timestamp1]) AS array_max
  FROM (
      VALUES ('1999-01-01'::DATE, '2023-12-09 22:09:26.000000000'::TIMESTAMP),
             ('2023-12-09'::DATE, '1999-01-01 22:09:26.000000000'::TIMESTAMP)
          AS t(date1, timestamp1)
      );
+---------------------------+
| ARRAY_MAX                 |
|---------------------------|
| "2023-12-09 22:09:26.000" |
| "2023-12-09 00:00:00.000" |
+---------------------------+