MIN
Описание
Функция MIN возвращает минимальное значение выражения, отличное от NULL.
Различия между версиями: в серии Doris 4.1 начиная с 4.1.5, а также в Doris 4.2 и более поздних версиях элемент со значением NULL внутри массива считается большим, чем элемент, отличный от NULL. В Doris 4.0 и версиях Doris 4.1 до 4.1.5 элемент массива со значением NULL считается меньшим. Значение массива, равное NULL, игнорируется во всех этих версиях.
Синтаксис
MIN(<expr>)
Параметры
| Параметр | Описание |
|---|---|
<expr> | Выражение, для которого вычисляется минимум. Поддерживаемые типы: String, Time, Date, DateTime, Timestamptz, IPv4, IPv6, TinyInt, SmallInt, Integer, BigInt, LargeInt, Float, Double, Decimal, Array. |
Возвращаемое значение
Возвращает значение того же типа данных, что и входное выражение. Если все записи в группе имеют значение NULL, функция возвращает NULL.
В серии 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);
Table created and data inserted successfully.
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 |
+---------------+