MIN_BY 函数

min_by(expr1, expr2)

功能描述

MIN_BY 函数用于从一组数据中找出与 expr2 中最小值相关联的 expr1 的值。该函数在处理成对的数据时非常有用,可以帮助您快速找到与特定条件相关的最佳匹配项。

参数说明

  • expr1:任何数据类型。这是您希望根据 expr2 的最小值返回的值。
  • expr2:可比较的数据类型,包括数值类型(如 tinyint、smallint、int、bigint、float、double、decimal),时间类型(如 date、timestamp),字符串类型(如 char、varchar、string)以及二进制类型(如 binary)。

返回结果

  • 返回结果的类型与 expr1 的类型相匹配。
  • 如果 expr2 中的所有值均为 null,则返回结果也为 null。

使用示例

  1. 数值类型的示例:
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。

  1. 时间类型的示例:
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'。

  1. 字符串类型的示例:
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 函数适用于成对数据的比较和筛选,但不适用于单独的数据项。

联系我们
预约咨询
微信咨询
电话咨询