SQLでヒストグラムを作る

あるカラムの値について、以下のSQLでヒストグラムが作れます。
COLUMN_NAME にはカラム名を指定して下さい。
TABLE_NAME にはテーブル名を指定して下さい。
BIN_NUM にはビンの数(階級数)を数値で指定して下さい。

WITH stats AS
         (
             SELECT
                 MIN(COLUMN_NAME) AS min_COLUMN_NAME,
                 MAX(COLUMN_NAME) - MIN(COLUMN_NAME) AS range_COLUMN_NAME,
                 BIN_NUM AS bin_num
             FROM TABLE_NAME
         ),
     bins AS
         (
             SELECT
                 FLOOR((COLUMN_NAME - min_COLUMN_NAME) / (range_COLUMN_NAME / bin_num)) AS bin
             FROM TABLE_NAME, stats
         )
SELECT bin, COUNT(bin) AS count
FROM bins
GROUP BY bin
ORDER BY bin ASC

以下のような出力が得られます

内容の解説

WITH式を使って、ヒストグラム作成に必要なデータを集めた一時テーブルを作成しています。
WITHで作成された一時テーブルは後続のSELECT内で参照できます。

WITH statsでは最小値やビンの幅を算出しています。
WITH binsでは階級値を算出しています。
最後のSELECT 〜で階級値を集約してヒストグラムにしています。

コメントする