Hologres从V1.3.36版本开始支持MAX_BY与MIN_BY函数,用于获取当某一列(y列)的值为最大值或最小值时,对应着的另外一列(x列)的取值。本文为您介绍MAX_BY与MIN_BY函数的用法。
使用限制
该函数适用于Hologres V1.3.36及以上版本的实例,若实例低于该版本,请您通过加入实时数仓Hologres交流群申请升级实例,详情请参见如何获取更多的在线支持?。
语法
MAX_BY与MIN_BY函数用于比较某一列(y列)取值的大小,当y列取值为最大值或最小值时,返回对应着的另外一列(x列)的取值。语法如下。
说明
数字类型按数字大小进行比较,非数字类型按照字典排序进行比较。
MAX_BY(x, y);
MIN_BY(x, y);
参数说明如下。
参数 | 描述 |
y | 需要比较大小的列。 |
x | 另外一列的字段名。
|
使用说明如下。
当MAX_BY函数中y列的最大值存在多个时,则返回对应的多个x值中的最大值。
当MIN_BY函数中y列的最小值存在多个时,则返回对应的多个x值中的最小值。
y列的NULL值不参与计算。当y列所有值均为NULL时,函数返回值为NULL。
示例数据
DROP TABLE IF EXISTS test;
CREATE TABLE IF NOT EXISTS test (
id int,
name text,
cost int
);
INSERT INTO test
VALUES (1, 'a', 100), (1, 'aa', 200), (1, 'aaa', 300), (2, 'b', 150), (2, 'bb', 300), (3, 'c', 150), (3, 'cc', 50);
示例
使用
MAX_BY
函数,通过GROUP BY
对id进行分组,查询每组cost最大值对应的name值。示例语句如下。SELECT id, max_by(name, cost) FROM test GROUP BY id; id | max_by ----+-------- 2 | bb 1 | aaa 3 | c (3 rows)
使用
MAX_BY
函数,查询cost最大值(存在多个)对应的name值。示例语句如下。select max_by(name, cost) from test; max_by -------- bb (1 row)
使用
MIN_BY
函数,查询cost最小值对应的name值。示例语句如下。SELECT min_by(name, cost) FROM test; min_by -------- cc (1 row)
反馈
- 本页导读 (1)
文档反馈