Перейти к содержимому
Последнее обновление

MIN

Описание​

Функция MIN возвращает минимальное значение выражения, отличное от NULL.

Синтаксис​

MIN(<expr>)

Параметры​

ПараметрОписание
<expr>Выражение, для которого требуется получить значение. Поддерживаются типы String, Time, Date, DateTime, TimestampNs, Timestamptz, IPv4, IPv6, UUID, TinyInt, SmallInt, Integer, BigInt, LargeInt, Float, Double, Decimal, Array.

Возвращаемое значение​

Возвращает значение того же типа данных, что и входное выражение. Если все записи в группе имеют значение NULL, функция возвращает NULL.

Изменение поведения (4.1.5)

В ветке Doris 4.1 начиная с версии 4.1.5 элементы NULL внутри значений сложных типов, например массивов, считаются больше элементов, отличных от NULL, на той же позиции. Например, [10, 20, NULL] больше, чем [10, 20, 40]. Это отличается от случая, когда всё выражение имеет значение NULL: такие строки по-прежнему игнорируются. До версии 4.1.5 при сравнении в агрегатных функциях элементы NULL внутри значений сложных типов считались меньшими.

Пример​

-- setup
create table t1(
k1 int,
k_string varchar(100),
k_decimal decimal(10, 2),
k_array array<int>
) distributed by hash (k1) buckets 1
properties ("replication_num"="1");
insert into t1 values
(1, 'apple', 10.01, [10, 20, 30]),
(1, 'banana', 20.02, [10, 20]),
(2, 'orange', 30.03, [10, 20, 40]),
(2, null, null, [10, 20, null]),
(3, null, null, null);
select k1, min(k_string) from t1 group by k1 order by k1;

Тип String: для каждой группы возвращает минимальное строковое значение.

+------+---------------+
| k1 | min(k_string) |
+------+---------------+
| 1 | apple |
| 2 | orange |
| 3 | NULL |
+------+---------------+
select k1, min(k_decimal) from t1 group by k1 order by k1;

Тип Decimal: возвращает минимальное десятичное значение высокой точности.

+------+----------------+
| k1 | min(k_decimal) |
+------+----------------+
| 1 | 10.01 |
| 2 | 30.03 |
| 3 | NULL |
+------+----------------+
select k1, min(k_array) from t1 group by k1 order by k1;

Для типа Array: сравнивает элементы по порядку и возвращает минимальный массив для каждой группы. Элементы NULL считаются больше элементов, отличных от NULL, на той же позиции.

+------+----------------+
| k1 | min(k_array) |
+------+----------------+
| 1 | [10, 20] |
| 2 | [10, 20, 40] |
| 3 | NULL |
+------+----------------+
select min(k_string) from t1 where k1 = 3;

Если все значения в группе равны NULL, возвращает NULL.

+---------------+
| min(k_string) |
+---------------+
| NULL |
+---------------+
select min(k_string) from t1;

Минимальное значение среди всех данных.

+---------------+
| min(k_string) |
+---------------+
| apple |
+---------------+