MIN
min([DISTINCT] expr) [FILTER (WHERE condition)]
功能描述
MIN
MIN
函数用于从一组数据中找出最小值。该函数支持多种数据类型,包括数值类型(如
TINYINT
TINYINT
、
SMALLINT
SMALLINT
、
INT
INT
、
BIGINT
BIGINT
、
FLOAT
FLOAT
、
DOUBLE
DOUBLE
和
DECIMAL
DECIMAL
)、时间类型(如
DATE
DATE
和
TIMESTAMP
TIMESTAMP
)、字符串类型(如
CHAR
CHAR
、
VARCHAR
VARCHAR
和
STRING
STRING
)以及
BINARY
BINARY
类型。
参数说明
expr
expr
:可比较的数据类型,包括数值类型、时间类型和字符串类型。
返回结果
- 返回值类型与输入参数类型相同。
- 若设置
DISTINCT
DISTINCT
关键字,则计算去重后的集合中的最小值,但对结果无影响。
NULL
NULL
值不参与计算。
使用示例
- 从一组数值中找出最小值:
SELECT min(col) FROM VALUES (10), (50), (20), (NULL) AS tab(col);
+------------+
| `min`(col) |
+------------+
| 10 |
+------------+
- 从一组时间类型数据中找出最小值:
SELECT min(col) FROM VALUES ('2023-01-01'), ('2022-12-31'), ('2023-02-01') AS tab(col);
+------------+
| `min`(col) |
+------------+
| 2022-12-31 |
+------------+
- 从一组字符串类型数据中找出最小值:
SELECT min(col) FROM VALUES ('apple'), ('banana'), ('cherry') AS tab(col);
+------------+
| `min`(col) |
+------------+
| apple |
+------------+
- 使用
DISTINCT
DISTINCT
关键字从一组数值中找出最小值(对结果无影响):
SELECT min(DISTINCT col) FROM VALUES (10), (50), (20), (NULL), (10), (20) AS tab(col);
+---------------------+
| `min`(DISTINCT col) |
+---------------------+
| 10 |
+---------------------+
- 使用 FILTER 子句条件性地找出最小值:
SELECT min(col) FILTER (WHERE col > 15) FROM VALUES (10), (20), (50), (NULL) AS tab(col);
+---------------------------------------+
| `min`(col) FILTER (WHERE (col > 15)) |
+---------------------------------------+
| 20 |
+---------------------------------------+
- 结合 FILTER 子句和 DISTINCT 找出条件最小值:
SELECT min(DISTINCT col) FILTER (WHERE col < 50) FROM VALUES (10), (10), (20), (50) AS tab(col);
+------------------------------------------------------+
| `min`(DISTINCT col) FILTER (WHERE (col < 50)) |
+------------------------------------------------------+
| 10 |
+------------------------------------------------------+
通过以上示例,你可以看到
MIN
MIN
函数在不同数据类型中的应用。请注意,
NULL
NULL
值不参与计算。