- カテゴリ:
WIDTH_BUCKET¶
等幅ヒストグラムを作成します。この場合、ヒストグラムの範囲は同じサイズの間隔に分割され、評価された後、式の値が含まれるバケット番号を返します。この関数は、整数値またはnull(入力がnullの場合)を返します。
構文¶
WIDTH_BUCKET( <expr> , <min_value> , <max_value> , <num_buckets> )
引数¶
expr
ヒストグラムが作成される式です。この式は、数値、または暗黙的に数値に変換できる値に評価される必要があります。
値は
-(2^53 - 1)
から2^53 - 1
(両端を含む)の範囲内である必要があります。min_value
およびmax_value
式の許容範囲の下限および上限です。エンドポイントも数値に評価され、等しくない必要があります。
ローエンドポイントとハイエンドポイントは、
-(2^53 - 1)
から2^53 - 1
(両端を含む)の範囲内である必要があります。さらに、これらのポイント間の差は2^53
未満である必要があります(つまり、abs(max_value - min_value) < 2^53
)。num_buckets
必要なバケット数です。正の整数値でなければなりません。式の値が各バケットに割り当てられ、関数は対応するバケット番号を返します。
式が範囲外にある場合、関数は次を返します。
0
式がmin_value
未満の場合。式が
max_value
以上の場合はnum_buckets + 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 | +------------+-----------+-------------+