説明
この関数は、入力パラメータに基づいて等長のセグメントを作成し、expr が位置するセグメント番号を返します。つまり、ヒストグラムの範囲が同じサイズの区間に分割される、等幅ヒストグラムを構築します。
構文
WIDTH_BUCKET
(expr, min_value, max_value, num_buckets)
パラメータの説明
| パラメータ | 説明 |
|---|---|
| expr | 等長のセグメントを作成するための式を指定します。数値または日付時刻値、あるいは数値または日付時刻値に暗黙的に変換できる値である必要があります。 |
| min_value | 式 expr の範囲の左端点を指定します。データ型は expr と同じであり、NULL ではないこと。 |
| max_value | 式 expr の範囲の右端点を指定します。データ型は expr と同じであり、NULL ではないこと。 |
| num_buckets | 範囲 min_value と max_value の間のセグメント数を指定します。この式の計算結果は正の整数でなければなりません。 |
説明
min_value<max_valueの場合:expr<min_valueの場合、この関数は0を返します。expr>=min_valueの場合、この関数はnum_bucketsの値に1を加えた値を返します。
min_value>max_valueの場合:expr>min_valueの場合、この関数は0を返します。expr<=min_valueの場合、この関数はnum_bucketsの値に1を加えた値を返します。
戻り値のタイプ
NUMERIC 型データを返します。
例
テーブル tbl1 を作成し、テストデータを挿入します。範囲を 1 から 100 まで、10 のセグメントに設定し、col2 が存在するセグメント番号を返します。
obclient> CREATE TABLE tbl1 (col1 INT,col2 NUMBER(10,2));
Query OK, 0 rows affected
obclient> INSERT INTO tbl1 VALUES(1,0.5),(2,1),(3,9),(4,10),(5,11),(6,55),(7,100),(8,101),(9,'');
Query OK, 9 rows affected
Records: 9 Duplicates: 0 Warnings: 0
obclient> SELECT col1,col2,WIDTH_BUCKET(col2,1,100,10) FROM tbl1;
+------+------+-----------------------------+
| COL1 | COL2 | WIDTH_BUCKET(COL2,1,100,10) |
+------+------+-----------------------------+
| 1 | .5 | 0 |
| 2 | 1 | 1 |
| 3 | 9 | 1 |
| 4 | 10 | 1 |
| 5 | 11 | 2 |
| 6 | 55 | 6 |
| 7 | 100 | 11 |
| 8 | 101 | 11 |
| 9 | NULL | NULL |
+------+------+-----------------------------+
9 rows in set