MIN 窗口函数返回最小输入表达式值。MIN 函数使用数值并忽略 NULL 值。
语法
MIN ( [ ALL ] expression ) OVER ( [ PARTITION BY expr_list ] [ ORDER BY order_list frame_clause ] )
参数
- expression
-
对其执行函数的目标列或表达式。
- ALL
-
利用参数 ALL,该函数可保留表达式中的所有重复值。ALL 是默认值。DISTINCT 不受支持。
- OVER
-
指定聚合函数的窗口子句。OVER 子句将窗口聚合函数与普通集合聚合函数区分开来。
- PARTITION BY expr_list
-
依据一个或多个表达式定义 MIN 函数的窗口。
- ORDER BY order_list
-
对每个分区中的行进行排序。如果未指定 PARTITION BY,则 ORDER BY 使用整个表。
- frame_clause
-
如果 ORDER BY 子句用于聚合函数,则需要显式框架子句。框架子句优化函数窗口中的行集,包含或排除已排序结果中的行集。框架子句包括 ROWS 关键字和关联的说明符。请参阅 窗口函数语法摘要。
数据类型
接受任何数据类型作为输入。返回与 expression 相同的数据类型。
示例
以下示例从数据窗口的开头显示销售 ID、数量和最小数量:
select salesid, qty,
min(qty) over
(order by salesid rows unbounded preceding)
from winsales
order by salesid;
salesid | qty | min
---------+-----+-----
10001 | 10 | 10
10005 | 30 | 10
10006 | 10 | 10
20001 | 20 | 10
20002 | 20 | 10
30001 | 10 | 10
30003 | 15 | 10
30004 | 20 | 10
30007 | 30 | 10
40001 | 40 | 10
40005 | 10 | 10
(11 rows)
有关 WINSALES 表的说明,请参阅窗口函数示例的示例表。
以下示例在受限制的框架中显示销售 ID、数量和最小数量:
select salesid, qty,
min(qty) over
(order by salesid rows between 2 preceding and 1 preceding) as min
from winsales
order by salesid;
salesid | qty | min
---------+-----+-----
10001 | 10 |
10005 | 30 | 10
10006 | 10 | 10
20001 | 20 | 10
20002 | 20 | 10
30001 | 10 | 20
30003 | 15 | 10
30004 | 20 | 10
30007 | 30 | 15
40001 | 40 | 20
40005 | 10 | 30
(11 rows)