

 Amazon Redshift は、パッチ 198 以降、新しい Python UDF の作成をサポートしなくなります。既存の Python UDF は、2026 年 6 月 30 日まで引き続き機能します。詳細については、[ブログ記事](https://aws.amazon.com/blogs/big-data/amazon-redshift-python-user-defined-functions-will-reach-end-of-support-after-june-30-2026/)を参照してください。

# MEDIAN ウィンドウ関数
<a name="r_WF_MEDIAN"></a>

ウィンドウまたはパーティションの値の範囲について、その中央値を計算します。範囲の Null 値は無視されます。

MEDIAN は、連続型分散モデルを前提とする逆分散関数です。

## 構文
<a name="r_WF_MEDIAN-synopsis"></a>

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

## 引数
<a name="r_WF_MEDIAN-arguments"></a>

 *median\$1expression*   
中央値を特定する値を提供する式 (列名など)。式は、数値または日時データ型を含んでいるか、それらのデータ型に暗黙的に変換できる必要があります。

OVER   
ウィンドウのパーティションを指定する句。OVER 句にウィンドウの並び順またはウィンドウフレーム仕様を含めることはできません。

PARTITION BY *partition\$1expression*   
省略可能。OVER 句の各グループのレコードの範囲を設定する式。

## データ型
<a name="r_WF_MEDIAN-data-types"></a>

戻り値の型は、データ型 *median\$1expression* によって決まります。次の表は、各 *median\$1expression* 式のデータ型に対応する戻り型を示しています。

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/redshift/latest/dg/r_WF_MEDIAN.html)

## 使用に関する注意事項
<a name="r_WF_MEDIAN-data-usage-notes"></a>

*median\$1expression* 引数が DECIMAL データ型であり、その最大精度が 38 桁である場合、MEDIAN が不正確な結果またはエラーを返す可能性があります。MEDIAN 関数の戻り値が 38 桁を超える場合、結果は 38 桁までとなり、39 桁以降は切り捨てられるため、精度が失われます。補間中に中間結果が最大精度を超えた場合には、数値オーバーフローが発生し、この関数はエラーを返します。このような状態を回避するため、精度が低いデータ型を使用するか、*median\$1expression* 引数を低い精度にキャストすることをお勧めします。

例えば、DECIMAL 引数の SUM 関数のデフォルトの 38 桁の精度を返します。結果のスケールは、引数のスケールと同じです。したがって、例えば、DECIMAL(5,2) 列の SUM は DECIMAL(38,2) データ型を返します。

次の例では、MEDIAN 関数の *median\$1expression* 引数で 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;
```

## 例
<a name="r_WF_MEDIAN-examples"></a>

 以下の例では、各販売者の平均販売数量を計算します。

```
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 テーブルの説明については、「[ウィンドウ関数例のサンプルテーブル](c_Window_functions.md#r_Window_function_example)」を参照してください。