ARRAY_MAX
ARRAY_MAX
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" |
+---------------------------+