카테고리:

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

ARRAY_MAX

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

구문

ARRAY_MAX( <array> )
Copy

인자

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]);
Copy
+------------------------------------+
| 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]);
Copy
+--------------------------------------------------+
| ARRAY_MAX([20, 0, PARSE_JSON('NULL'), 10, NULL]) |
|--------------------------------------------------|
| null                                             |
+--------------------------------------------------+

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

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

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

SELECT ARRAY_MAX([NULL, NULL, NULL]);
Copy
+-------------------------+
| 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)
      );
Copy
+---------------------------+
| ARRAY_MAX                 |
|---------------------------|
| "2023-12-09 22:09:26.000" |
| "2023-12-09 00:00:00.000" |
+---------------------------+