MIN_BY 函数
功能描述
MIN_BY 函数用于从一组数据中找出与 expr2 中最小值相关联的 expr1 的值。该函数在处理成对的数据时非常有用,可以帮助您快速找到与特定条件相关的最佳匹配项。
参数说明
- expr1:任何数据类型。这是您希望根据 expr2 的最小值返回的值。
- expr2:可比较的数据类型,包括数值类型(如 tinyint、smallint、int、bigint、float、double、decimal),时间类型(如 date、timestamp),字符串类型(如 char、varchar、string)以及二进制类型(如 binary)。
返回结果
- 返回结果的类型与 expr1 的类型相匹配。
- 如果 expr2 中的所有值均为 null,则返回结果也为 null。
使用示例
- 数值类型的示例:
SELECT min_by(num1, num2) FROM VALUES
((1, 10)),
((2, 20)),
((3, 5)),
((4, 30)) AS tab(num1, num2);
+--------------------+
| min_by(num1, num2) |
+--------------------+
| 3 |
+--------------------+
在这个示例中,我们可以看到 num2 的最小值是 5,与它相关联的 num1 的值是 3。
- 时间类型的示例:
SELECT min_by(date1, date2) FROM VALUES
(('2022-01-01', '2023-01-01')),
(('2022-02-01', '2022-12-31')),
(('2022-03-01', '2022-01-01')) AS tab(date1, date2);
+----------------------+
| min_by(date1, date2) |
+----------------------+
| 2022-03-01 |
+----------------------+
在这个示例中,我们可以看到 date2 的最小值是 '2022-01-01',与它相关联的 date1 的值也是 '2022-01-01'。
- 字符串类型的示例:
SELECT min_by(str1, str2) FROM VALUES
(('apple', 'A')),
(('banana', 'B')),
(('cherry', 'C')) AS tab(str1, str2);
+--------------------+
| min_by(str1, str2) |
+--------------------+
| apple |
+--------------------+
在这个示例中,我们可以看到 str2 的最小值是 'A',与它相关联的 str1 的值是 'apple'。
注意事项
- 请确保 expr1 和 expr2 的数据类型兼容,否则可能导致函数执行失败。
- 如果 expr2 中的所有值均为 null,函数将返回 null。
- MIN_BY 函数适用于成对数据的比较和筛选,但不适用于单独的数据项。