トップページに戻る    次のSQLパズルへ    前のSQLパズルへ

3-14 Width_Bucket関数

SQLパズル

WidthTable
Score
-----
  200
  350
  450
  500
  650
  850
 1200

Scoreの最大値から最小値までを10分割した、等幅ヒストグラムを作成する。

出力結果
Score  Val  FWH
-----  ---  ---------------------
  200    1   ●
  350    2   ●●
  450    3   ●●●
  500    3   ●●●
  650    5   ●●●●●
  850    6   ●●●●●●
 1200   10   ●●●●●●●●●●


データ作成スクリプト

create table WidthTable(Score) as
select  200 from dual union
select  350 from dual union
select  450 from dual union
select  500 from dual union
select  650 from dual union
select  850 from dual union
select 1200 from dual;


SQL

col FWH for a24

select Score,Val,Lpad(' ',(Val+1)*2,'●') as FWH
from (select Score,
      Width_Bucket(Score,min(Score) over(),max(Score) over(),9) as Val
        from WidthTable);


解説

Width_Bucket関数を使うと、等幅ヒストグラムを作成できます。
100点満点のテストを5点刻みといった要件で使えるかもしれませんね。

マニュアル Width_Bucket
マニュアル Width_Bucket(英語)