翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
MEDIAN ウィンドウ関数
ウィンドウまたはパーティションの値の範囲の中央値を計算します。範囲のNULL値は無視されます。
MEDIAN は、連続型分散モデルを前提とする逆分散関数です。
MEDIAN はコンピューティングノード専用の関数です。クエリがユーザー定義のテーブルまたは AWS Clean Rooms システムテーブルを参照していない場合、関数はエラーを返します。
構文
MEDIAN ( median_expression ) OVER ( [ PARTITION BY partition_expression ] )
引数
- median_expression
-
中央値を特定する値を提供する式 (列名など)。式は、数値または日時データ型を含んでいるか、それらのデータ型に暗黙的に変換できる必要があります。
- OVER
-
ウィンドウのパーティションを指定する句。OVER 句には、ウィンドウの順序やウィンドウフレームの指定を含めることはできません。
- PARTITION BY partition_expression
-
オプション。OVER 句内の各グループのレコードの範囲を設定する式。
データ型
戻り値の型は、データ型 median_expression によって決まります。次の表は、各 median_expression 式のデータ型に対応する戻り型を示しています。
入力の型 | 戻り型 |
---|---|
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) データ型を返します。
次の例では、 SUM関数の median_expression 引数で MEDIAN関数を使用します。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 テーブルの説明については、「ウィンドウ関数例のサンプルテーブル」を参照してください。