- カテゴリ:
WIDTH_BUCKET¶
等幅ヒストグラムを作成します。この場合、ヒストグラムの範囲は同じサイズの間隔に分割され、評価された後、式の値が含まれるバケット番号を返します。この関数は、整数値またはnull(入力がnullの場合)を返します。
注釈
WIDTH_BUCKET 関数は真のウィンドウ関数ではありません。ただし、次の理由により、ウィンドウ関数として大まかに分類されています。
行のグループに対してウィンドウのような操作を実行します。
次の点でウィンドウのように動作します。
戻り値の数は、入力値の数と同じです。(したがって、集計関数ではありません。)
各戻り値は、現在の行だけでなく、グループ内の他の行にも依存します。(したがって、スカラー関数ではありません。)
構文¶
WIDTH_BUCKET( <expr> , <min_value> , <max_value> , <num_buckets> )
引数¶
式
ヒストグラムが作成される式です。この式は、数値、または暗黙的に数値に変換できる値に評価される必要があります。
最小値
および最大値
式の許容範囲の下限および上限です。エンドポイントも数値に評価され、等しくない必要があります。
バケット数
必要なバケット数です。正の整数値でなければなりません。式の値が各バケットに割り当てられ、関数は対応するバケット番号を返します。
式が範囲外にある場合、関数は次を返します。
0
式が最小値
未満の場合。バケット数 + 1
式が最大値
以上の場合。
例¶
$200,000~600,000の価格帯で販売され、販売日順に並べられた住宅の price
列に4バケットヒストグラムを作成します。この関数は、セット内の各値のバケット番号(SALES GROUP
)を返します。
テーブルを作成して入力します。
CREATE TABLE home_sales ( sale_date DATE, price NUMBER(11, 2) ); INSERT INTO home_sales (sale_date, price) VALUES ('2013-08-01'::DATE, 290000.00), ('2014-02-01'::DATE, 320000.00), ('2015-04-01'::DATE, 399999.99), ('2016-04-01'::DATE, 400000.00), ('2017-04-01'::DATE, 470000.00), ('2018-04-01'::DATE, 510000.00);WIDTH_BUCKET()を呼び出して、テーブルをクエリします。
SELECT sale_date, price, WIDTH_BUCKET(price, 200000, 600000, 4) AS "SALES GROUP" FROM home_sales ORDER BY sale_date; +------------+-----------+-------------+ | SALE_DATE | PRICE | SALES GROUP | |------------+-----------+-------------| | 2013-08-01 | 290000.00 | 1 | | 2014-02-01 | 320000.00 | 2 | | 2015-04-01 | 399999.99 | 2 | | 2016-04-01 | 400000.00 | 3 | | 2017-04-01 | 470000.00 | 3 | | 2018-04-01 | 510000.00 | 4 | +------------+-----------+-------------+