選取您的 Cookie 偏好設定

我們使用提供自身網站和服務所需的基本 Cookie 和類似工具。我們使用效能 Cookie 收集匿名統計資料,以便了解客戶如何使用我們的網站並進行改進。基本 Cookie 無法停用,但可以按一下「自訂」或「拒絕」以拒絕效能 Cookie。

如果您同意,AWS 與經核准的第三方也會使用 Cookie 提供實用的網站功能、記住您的偏好設定,並顯示相關內容,包括相關廣告。若要接受或拒絕所有非必要 Cookie,請按一下「接受」或「拒絕」。若要進行更詳細的選擇,請按一下「自訂」。

MEDIAN 範圍函數

焦點模式
MEDIAN 範圍函數 - Amazon Redshift

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

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

計算視窗或分割區內值範圍的中位數。忽略範圍中的 NULL 值。

MEDIAN 是採用連續分佈模型的反向分佈函數。

語法

MEDIAN ( median_expression ) OVER ( [ PARTITION BY partition_expression ] )

引數

median_expression

此表達式 (例如欄名) 提供要決定中位數的值。表達式必須為數值或日期時間資料類型,或可隱含地轉換為這種資料類型。

OVER

用於指定視窗分割的子句。OVER 子句不能包含視窗排序或視窗框規格。

PARTITION BY partition_expression

選用。此表達式針對 OVER 子句中的每一個群組,設定記錄範圍。

資料類型

傳回類型取決於 median_expression 的資料類型。下表顯示每一個 median_expression 資料類型的傳回類型。

輸入類型 傳回類型
INT2、INT4、INT8、NUMERIC、DECIMAL DECIMAL
FLOAT、DOUBLE DOUBLE
DATE DATE

使用須知

如果 median_expression 引數是以最大精確度 38 位數定義的 DECIMAL 資料類型,MEDIAN 可能會傳回不準確的結果或錯誤。如果 MEDIAN 函數的傳回值超過 38 位數,會將結果截斷為適合長度,導致精確度降低。在插補期間,如果中間結果超過最大精確度,則會發生數值溢位,且函數會傳回錯誤。為了避免這些情況,建議使用精確度較低的資料類型,或將 median_expression 引數轉換為較低精確度。

例如,搭配 DECIMAL 引數的 SUM 函數傳回的預設精確度為 38 位數。結果的小數位數和引數的小數位數相同。因此,例如,DECIMAL(5,2) 欄的 SUM 會傳回 DECIMAL(38,2) 資料類型。

下列範例在 MEDIAN 函數的 median_expression 引數中使用 SUM 函數。PRICEPAID 欄的資料類型是 DECIMAL (8,2),所以 SUM 函數會傳回 DECIMAL(38,2)。

select salesid, sum(pricepaid), median(sum(pricepaid)) over() from sales where salesid < 10 group by salesid;

為了避免可能降低精確度或溢位錯誤,請將結果轉換為精確度較低的 DECIMAL 資料類型,如下列範例所示。

select salesid, sum(pricepaid), median(sum(pricepaid)::decimal(30,2)) over() from sales where salesid < 10 group by salesid;

範例

以下範例計算每一個賣方的銷售數量中位數:

select sellerid, qty, median(qty) over (partition by sellerid) from winsales order by sellerid; sellerid qty median --------------------------- 1 10 10.0 1 10 10.0 1 30 10.0 2 20 20.0 2 20 20.0 3 10 17.5 3 15 17.5 3 20 17.5 3 30 17.5 4 10 25.0 4 40 25.0

如需 WINSALES 資料表的描述,請參閱範圍函數範例的範例資料表

下一個主題:

MIN

上一個主題:

MAX

在本頁面

隱私權網站條款Cookie 偏好設定
© 2025, Amazon Web Services, Inc.或其附屬公司。保留所有權利。