選取您的 Cookie 偏好設定

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

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

MEDIAN 函數 - Amazon Redshift

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

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

MEDIAN 函數

計算值範圍的中值。忽略範圍內的 NULL 值。

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

MEDIAN 是 PERCENTILE_CONT 的特殊情況。

語法

MEDIAN(median_expression)

引數

median_expression

函數運算的目標欄或表達式。

資料類型

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

輸入類型 傳回類型
INT2, INT4, INT8, NUMERIC, DECIMAL DECIMAL
FLOAT, DOUBLE DOUBLE
DATE DATE
TIMESTAMP TIMESTAMP
TIMESTAMPTZ TIMESTAMPTZ

使用須知

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

如果陳述式中多次呼叫會排序的彙總函數 (LISTAGG、PERCENTILE_CONT 或 MEDIAN),則所有呼叫必須使用相同的 ORDER BY 值。請注意,MEDIAN 會對表達式值套用隱含的 order by。

例如,下列陳述式會傳回錯誤。

SELECT TOP 10 salesid, SUM(pricepaid), PERCENTILE_CONT(0.6) WITHIN GROUP(ORDER BY salesid), MEDIAN(pricepaid) FROM sales GROUP BY salesid, pricepaid; An error occurred when executing the SQL command: SELECT TOP 10 salesid, SUM(pricepaid), PERCENTILE_CONT(0.6) WITHIN GROUP(ORDER BY salesid), MEDIAN(pricepaid) FROM sales GROUP BY salesid, pricepaid; ERROR: within group ORDER BY clauses for aggregate functions must be the same

下列陳述式會成功執行。

SELECT TOP 10 salesid, SUM(pricepaid), PERCENTILE_CONT(0.6) WITHIN GROUP(ORDER BY salesid), MEDIAN(salesid) FROM sales GROUP BY salesid, pricepaid;

範例

下列範例使用 TICKIT 範例資料庫。如需詳細資訊,請參閱範本資料庫

下列範例顯示 MEDIAN 產生與 PERCENTILE_CONT(0.5) 相同的結果。

SELECT TOP 10 DISTINCT sellerid, qtysold, PERCENTILE_CONT(0.5) WITHIN GROUP(ORDER BY qtysold), MEDIAN(qtysold) FROM sales GROUP BY sellerid, qtysold; +----------+---------+-----------------+--------+ | sellerid | qtysold | percentile_cont | median | +----------+---------+-----------------+--------+ | 2 | 2 | 2 | 2 | | 26 | 1 | 1 | 1 | | 33 | 1 | 1 | 1 | | 38 | 1 | 1 | 1 | | 43 | 1 | 1 | 1 | | 48 | 2 | 2 | 2 | | 48 | 3 | 3 | 3 | | 77 | 4 | 4 | 4 | | 85 | 4 | 4 | 4 | | 95 | 2 | 2 | 2 | +----------+---------+-----------------+--------+

下列範例會找出每個 sellerid 售出的中位數量。

SELECT sellerid, MEDIAN(qtysold) FROM sales GROUP BY sellerid ORDER BY sellerid LIMIT 10; +----------+--------+ | sellerid | median | +----------+--------+ | 1 | 1.5 | | 2 | 2 | | 3 | 2 | | 4 | 2 | | 5 | 1 | | 6 | 1 | | 7 | 1.5 | | 8 | 1 | | 9 | 4 | | 12 | 2 | +----------+--------+

若要驗證第一個 sellerid 的先前查詢結果,請使用下列範例。

SELECT qtysold FROM sales WHERE sellerid=1; +---------+ | qtysold | +---------+ | 2 | | 1 | +---------+

下一個主題:

MIN

上一個主題:

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