MAX(Azure 流分析)

在表达式中返回最大值。

语法

-- Aggregate Function Syntax
MAX ( expression )

-- Analytic Function Syntax
MAX ( expression ) OVER ([<PARTITION BY clause>] <LIMIT DURATION clause> [<WHEN clause>])

参数

expression

是常量、列名或函数,以及算术运算符的任意组合。 不允许使用聚合函数和子查询。

MAX 可与 Bit、Bigint、Datetime 和 Float 列一起使用。

MAX 还可用于 NVARCHAR (MAX) 具有以下行为:

  • 如果列未显式强制转换为 NVARCHAR (MAX) ,则 MAX 将尝试将其隐式强制转换为 FLOAT。 类型不匹配将导致错误。
  • 如果使用 CAST 或 TRY_CAST 将列显式强制转换为 NVARCHAR (MAX ) ,则将返回最大字符串值。

OVER ([<PARTITION BY 子句><LIMIT DURATION 子句> [<WHEN 子句>]]

确定应用 MAX 的行组。 PARTITION BY 子句指定具有相同分区键的行将组合在一起。 LIMIT DURATION 子句指定组中包含的历史记录量。 WHEN 子句指定要包含在组中的行的布尔条件。 有关用法的更多详细信息,请参阅 OVER 子句

返回类型

返回与表达式相同的值。

示例

使用聚合语法,我们将减少行数。 在这里,我们选择每小时每个收费站的最高票价:

SELECT
  TollId,
  System.Timestamp() AS WindowEnd,
  MAX(Toll) AS MaxFare
FROM Input TIMESTAMP BY EntryTime
GROUP BY
  TollId,
  TumblingWindow(hour,1)

使用分析语法,我们维护输入基数。 对于每辆经过收费的车辆,我们将当前车费与过去一小时的最高车费进行比较:

SELECT
  TollId,
  System.Timestamp() AS PassageTime,
  LicensePlate,
  Toll AS Fare,
  MAX (Toll) OVER (PARTITION BY VehicleClass LIMIT DURATION(hour,1)) AS MaximumFareOverLastHour
FROM Input TIMESTAMP BY EntryTime

另请参阅