Skip to content

Latest commit

 

History

History
80 lines (58 loc) · 2.02 KB

File metadata and controls

80 lines (58 loc) · 2.02 KB

max_by

功能

返回与 y 的最大值相关联的 x 值。比如 SELECT max_by(subject, exam_result) FROM exam; 表示返回 exam 表中考试得分最高的科目。

语法

max_by(x,y)

参数说明

  • x: 一个任意类型的表达式。

  • y: 可以排序的某个类型的表达式。

返回值说明

返回值的类型与 x 相同。

使用说明

  • y 必须是可排序的数据类型。如果 y 不可排序,比如是 BITMAP 或者 HLL 类型,返回报错。

  • y 值为 NULL 时,NULL 对应的行不参与计算。

  • 如果存在多行都有最大值,则返回最先出现的那个 x 值。

示例

  1. 创建表 exam

    CREATE TABLE exam (
        subject_id INT,
        subject STRING,
        exam_result INT
    ) DISTRIBUTED BY HASH(`subject_id`) BUCKETS 1;
  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. 返回得分最高的 1 个科目。

    可以看到有 2 个科目 physicsmusic 都是最高分 95。返回第一个出现的科目 physics

    SELECT max_by(subject, exam_result) FROM exam;
    +------------------------------+
    | max_by(subject, exam_result) |
    +------------------------------+
    | physics                      |
    +------------------------------+
    1 row in set (0.02 sec)