構文
用途
WIDTH_BUCKET
を使用すると、ヒストグラムの幅が同じサイズに分割された等幅ヒストグラムを作成できます。このファンクションと、等高ヒストグラムを作成するNTILE
を比較してください。各バケットが実際の数値線幅のclosed-open間隔であることが理想です。たとえば、間隔に10が含まれ20が排除されることを示すために、バケットは10.00から19.999...のスコアに割り当てられます。これは、[10, 20]と表すこともできます。
指定された式に対して、WIDTH_BUCKET
は、この式の値が評価された後に該当するバケット数を戻します。
expr
は、ヒストグラムが作成される式です。この式は、数値または日時値、あるいは数値または日時値に暗黙的に変換可能な値に評価される必要があります。expr
がNULLと評価された場合、式はNULLを戻します。
min_value
およびmax_value
は、expr
の許容域のエンド・ポイントに解決される式です。これらの式は両方とも数値または日時値に評価される必要があり、いずれもNULLに評価されません。
num_buckets
は、バケット数を示す定数に解決される式です。この式は、正の整数に評価される必要があります。
Oracle Databaseは、必要に応じて、0(ゼロ)の下位バケットおよびnum_buckets
+1の上位バケットを作成します。これらのバケットは、min_value
未満およびmax_value
より大きい値を処理し、エンドポイントの妥当性チェックに有効です。
例
次の例では、サンプル表oe.customers
のスイスの顧客のcredit_limit
列に10バケットのヒストグラムを作成し、各顧客のバケット数(「クレジット・グループ」)を戻します。最大値以上のクレジット利用限度額を持つ顧客は、上位バケット11に割り当てられます。
SELECT customer_id, cust_last_name, credit_limit, WIDTH_BUCKET(credit_limit, 100, 5000, 10) "Credit Group" FROM customers WHERE nls_territory = 'SWITZERLAND' ORDER BY "Credit Group", customer_id, cust_last_name, credit_limit; CUSTOMER_ID CUST_LAST_NAME CREDIT_LIMIT Credit Group ----------- -------------------- ------------ ------------ 825 Dreyfuss 500 1 826 Barkin 500 1 827 Siegel 500 1 853 Palin 400 1 843 Oates 700 2 844 Julius 700 2 835 Eastwood 1200 3 836 Berenger 1200 3 837 Stanton 1200 3 840 Elliott 1400 3 841 Boyer 1400 3 842 Stern 1400 3 848 Olmos 1800 4 849 Kaurusmdki 1800 4 828 Minnelli 2300 5 829 Hunter 2300 5 850 Finney 2300 5 851 Brown 2300 5 852 Tanner 2300 5 830 Dutt 3500 7 831 Bel Geddes 3500 7 832 Spacek 3500 7 833 Moranis 3500 7 834 Idle 3500 7 838 Nicholson 3500 7 839 Johnson 3500 7 845 Fawcett 5000 11 846 Brando 5000 11 847 Streep 5000 11