跳到主要内容
版本: 最新版本-3.5

min_by

返回与y最小值相关联的x的值。

例如,SELECT min_by(subject, exam_result) FROM exam; 将返回考试成绩最低的科目。

此函数从 v2.5 版本开始支持。

语法

min_by(x,y)

参数

  • x:任何类型的表达式。
  • y:可以排序的类型的表达式。

返回值

返回与x类型相同的值。

使用说明

  • y必须是可排序的类型。如果使用不可排序的y类型,例如bitmaphll,则会返回错误。
  • 如果y包含空值,则忽略与空值对应的行。
  • 如果多个x值具有相同的y最小值,则此函数返回遇到的第一个x值。

示例

  1. 创建表exam

    CREATE TABLE exam (
    subject_id INT,
    subject STRING,
    exam_result INT
    ) DISTRIBUTED BY HASH(`subject_id`);
  2. 将值插入此表并从此表查询数据。

    insert into exam values
    (1,'math',90),
    (2,'english',70),
    (3,'physics',95),
    (4,'chemistry',85),
    (5,'music',95),
    (6,'biology',null);

    select * from exam order by subject_id;
    +------------+-----------+-------------+
    | subject_id | subject | exam_result |
    +------------+-----------+-------------+
    | 1 | math | 90 |
    | 2 | english | 70 |
    | 3 | physics | 95 |
    | 4 | chemistry | 85 |
    | 5 | music | 95 |
    | 6 | biology | null |
    +------------+-----------+-------------+
    6 rows in set (0.03 sec)
  3. 获取分数最低的科目。返回分数最低70的科目english

    SELECT min_by(subject, exam_result) FROM exam;
    +------------------------------+
    | min_by(subject, exam_result) |
    +------------------------------+
    | english |
    +------------------------------+
    1 row in set (0.01 sec)