MAX_BY

max_by(expr1, expr2) [FILTER (WHERE condition)]

功能描述

MAX_BY
MAX_BY
函数用于从一组数据中返回与
expr2
expr2
表达式的最大值相关联的
expr1
expr1
表达式的值。该函数在处理成对的数据时非常有用,可以帮助你快速找到与最大值相对应的数据项。

参数说明

  • expr1
    expr1
    :任何数据类型的表达式。
  • expr2
    expr2
    :可比较的数据类型表达式,包括数值类型(如
    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
    )。

返回结果

返回与

expr2
expr2
表达式的最大值相关联的
expr1
expr1
表达式的值。结果类型与
expr1
expr1
的类型匹配。如果
expr2
expr2
中的所有值均为
NULL
NULL
,则返回
NULL
NULL
。

使用示例

  1. 从一组字符串和整数数据中找到与最大整数值相关联的字符串:

    SELECT max_by(str, num) FROM VALUES ('apple', 1), ('banana', 3), ('cherry', 2) AS tab(str, num); +------------------+ | max_by(str, num) | +------------------+ | banana | +------------------+

  2. 从一组日期和字符串数据中找到与最晚日期相关联的字符串:

    SELECT max_by(str, date) FROM VALUES ('event1', '2022-01-01'), ('event2', '2022-02-01'), ('event3', '2022-01-15') AS tab(str, date); +---------------------+ | max_by(str, `date`) | +---------------------+ | event2 | +---------------------+

  3. 从一组员工姓名和工资数据中找到与最高工资相关联的员工姓名:

    SELECT max_by(name, salary) FROM VALUES ('Alice', 5000), ('Bob', 6000), ('Charlie', 4500) AS tab(name, salary); +----------------------+ | max_by(name, salary) | +----------------------+ | Bob | +----------------------+

  4. 使用 FILTER 子句条件性地查找关联值:

    SELECT max_by(name, salary) FILTER (WHERE salary < 6000) FROM VALUES ('Alice', 5000), ('Bob', 6000), ('Charlie', 4500) AS tab(name, salary); +------------------------------------------------------+ | max_by(name, salary) FILTER (WHERE (salary < 6000)) | +------------------------------------------------------+ | Alice | +------------------------------------------------------+

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