min_by
返回与 y 的最小值关联的 x 值。比如 SELECT min_by(subject, exam_result) FROM exam; 表示返回 exam 表中考试得分最低的科目。
该函数从 3.1 版本开始支持。
语法
min_by(x,y)
参数说明
- 
x: 一个任意类型的表达式。
- 
y: 可以排序的某个类型的表达式。
返回值说明
返回值的类型与 x 相同。
使用说明
- 
y必须是可排序的数据类型。如果y不可排序,比如是 BITMAP 或者 HLL 类型,返回报错。
- 
y值包含 NULL 时,NULL 对应的行不参与计算。
- 
如果存在多行都有最小值,则返回最先出现的那个 x值。
示例
- 
创建表 exam。CREATE TABLE exam (
 subject_id INT,
 subject STRING,
 exam_result INT
 ) DISTRIBUTED BY HASH(`subject_id`);
- 
向表插入数据并查询表中数据。 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)
- 
返回得分最低的 1 个科目。 SELECT min_by(subject, exam_result) FROM exam;
 +------------------------------+
 | min_by(subject, exam_result) |
 +------------------------------+
 | english |
 +------------------------------+
 1 row in set (0.01 sec)