説明
この関数は、入力パラメータに基づいて等長の区間を作成し、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