

如需與 Amazon Timestream for LiveAnalytics 類似的功能，請考慮使用 Amazon Timestream for InfluxDB。它提供簡化的資料擷取和單一位數毫秒查詢回應時間，以進行即時分析。[在這裡](https://docs.aws.amazon.com//timestream/latest/developerguide/timestream-for-influxdb.html)進一步了解。

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 範圍函數
<a name="window-functions"></a>

視窗函數會跨查詢結果的資料列執行計算。它們會在 HAVING 子句之後，但在 ORDER BY 子句之前執行。叫用視窗函數需要使用 OVER 子句來指定視窗的特殊語法。視窗有三個元件：
+ 分割區規格，將輸入資料列分隔為不同的分割區。這類似於 GROUP BY 子句如何將資料列分成不同的群組來彙總函數。
+ 排序規格，決定視窗函數處理輸入資料列的順序。
+ 視窗框架，指定要由指定資料列的函數處理的資料列滑動視窗。如果未指定影格，則預設為 RANGE UNBOUNDEDING，這與 UNBOUNDEDING 和目前資料列之間的範圍相同。此影格包含從分割區開始到目前資料列最後一個對等的所有資料列。

所有彙總函數都可以透過新增 OVER 子句來用作視窗函數。彙總函數會針對目前資料列視窗框架內資料列上的每一列計算。除了彙總函數之外，Timestream for LiveAnalytics 還支援下列排名和值函數。


| 函式 | 輸出資料類型 | Description | 
| --- | --- | --- | 
| cume\_dist() | bigint | 傳回一組值中值的累積分佈。結果是視窗分割區視窗順序中的資料列前面或對等的資料列數，除以視窗分割區中的資料列總數。因此，排序中的任何繫結值都會評估為相同的分佈值。 | 
| dense\_rank() | bigint | 傳回一組值中值的排名。這類似於 rank()，但綁定值不會在序列中產生間隙。 | 
| ntile(n) | bigint | 將每個視窗分割區的資料列分割為 n 個儲存貯體，範圍從 1 到最多 n 個。儲存貯體值最多會相差 1。如果分割區中的資料列數目未平均劃分為儲存貯體數目，則剩餘值會從第一個儲存貯體開始，每個儲存貯體分配一個。 | 
| percent\_rank() | double | 傳回值群組中值的百分比排名。結果為 (r - 1) / (n - 1)，其中 r 是資料列的 rank()，n 是視窗分割區中的資料列總數。 | 
| rank() | bigint | 傳回一組值中值的排名。排名是一加列前面的列數，而該列與列不對等。因此，排序中的綁定值會在序列中產生間隙。排名會針對每個視窗分割區執行。 | 
| row\_number() | bigint | 根據視窗分割區內的資料列順序，傳回每個資料列的唯一序號，從一個資料列開始。 | 
| first\_value(x) | 【與輸入相同】 | 傳回視窗的第一個值。此函數的範圍是視窗影格。函數以表達式或目標做為其參數。 | 
| last\_value(x) | 【與輸入相同】 | 傳回視窗的最後一個值。此函數的範圍是視窗影格。函數以表達式或目標做為其參數。 | 
| nth\_value(x， 位移） | 【與輸入相同】 | 傳回從視窗開始的指定位移值。位移從 1 開始。位移可以是任何純量表達式。如果位移為 null 或大於視窗中的值數目，則會傳回 null。這是位移為零或負的錯誤。函數會將表達式或目標作為其第一個參數。 | 
| lead(x【， offset【， default\_value】】) | 【與輸入相同】 | 傳回視窗中目前資料列之後位移資料列的值。位移從 0 開始，這是目前的資料列。位移可以是任何純量表達式。預設位移為 1。如果位移為 Null 或大於視窗，則會傳回 default\_value，或未指定 Null。函數會將表達式或目標作為其第一個參數。 | 
| lag(x【， offset【， default\_value】】) | 【與輸入相同】 | 傳回在視窗中目前資料列之前位移資料列的值 位移從 0 開始，這是目前資料列。位移可以是任何純量表達式。預設位移為 1。如果位移為 Null 或大於視窗，則會傳回 default\_value，或未指定 Null。函數會將表達式或目標作為其第一個參數。 | 