min_by
返回与y
最小值相关联的x
的值。
例如,SELECT min_by(subject, exam_result) FROM exam;
将返回考试成绩最低的科目。
此函数从 v2.5 版本开始支持。
语法
min_by(x,y)
参数
x
:任何类型的表达式。y
:可以排序的类型的表达式。
返回值
返回与x
类型相同的值。
使用说明
y
必须是可排序的类型。如果使用不可排序的y
类型,例如bitmap
或hll
,则会返回错误。- 如果
y
包含空值,则忽略与空值对应的行。 - 如果多个
x
值具有相同的y
最小值,则此函数返回遇到的第一个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) -
获取分数最低的科目。返回分数最低
70
的科目english
。SELECT min_by(subject, exam_result) FROM exam;
+------------------------------+
| min_by(subject, exam_result) |
+------------------------------+
| english |
+------------------------------+
1 row in set (0.01 sec)