共用方式為


麥克斯

✅ Azure 串流分析 ✅ 網狀架構事件串流

傳回表達式中的最大值。

語法

-- Aggregate Function Syntax
MAX ( expression )

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

論點

表示式

這是常數、數據行名稱或函式,以及算術運算符的任何組合。 不允許彙總函式和子查詢。

MAX 可以搭配 Bit、Bigint、Datetime 和 Float 數據行使用。

MAX 也可以與 NVARCHAR(MAX) 搭配使用,並具有下列行為:

  • 如果數據行未明確轉換成 NVARCHAR(MAX),則 MAX 會嘗試以隱含方式將它轉換成 FLOAT。 類型不符會導致錯誤。
  • 如果數據行使用 CASTTRY_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

另請參閱