ヒストグラムは、データから度数分布をプロットし、洞察をすばやく引き出すのに役立ちます。 MySQLでヒストグラムを作成する方法は次のとおりです。これを使用して、MySQLおよびPostgreSQLで度数分布を作成できます。
MySQLでヒストグラムを作成するには?
MySQLでヒストグラムを作成するためのSQLクエリは次のとおりです。
次のテーブルがあるとしますsales(order_date、sale)
mysql> create table sales(order_date date,sale int); mysql> insert into sales values('2020-04-01',210), ('2020-04-02',125),('2020-04-03',150),('2020-04-04',230), ('2020-04-05',200),('2020-04-10',220),('2020-04-06',250), ('2020-04-07',215),('2020-04-08',300),('2020-04-09',250); mysql> select * from sales; order_date | sale ------------+------ 2020-04-01 | 210 2020-04-02 | 125 2020-04-03 | 150 2020-04-04 | 230 2020-04-05 | 200 2020-04-10 | 220 2020-04-06 | 250 2020-04-07 | 215 2020-04-08 | 300 2020-04-09 | 250
ボーナスリード:CSVファイルをMySQLにインポートする方法
MySQLでヒストグラムを作成する
MySQLでヒストグラムを作成するための複数のMySQLヒストグラムクエリがあります。それぞれを見ていきます。
MySQLでヒストグラムを作成する最も簡単な方法
MySQLヒストグラムのビンの間隔が等しい場合(10〜20、20〜30、30〜40など)、MySQLで度数分布を作成するためのSQLクエリは次のとおりです。
mysql> select floor(sale/10)*10 as bin_floor, count(*) from sales group by 1 order by 1; +-----------+----------+ | bin_floor | count(*) | +-----------+----------+ | 120 | 1 | | 150 | 1 | | 200 | 1 | | 210 | 2 | | 220 | 1 | | 230 | 1 | | 250 | 2 | | 300 | 1 | +-----------+----------+
上記のクエリでは、ヒストグラムのビンサイズは10です。ビンサイズを25に変更する場合は、 floor(sale / 10 >を変更します。 )* 10 floor(sale / 25 )* 25
mysql> select floor(sale/25)*25 as bin_floor, count(*) from sales group by 1 order by 1; +-----------+----------+ | bin_floor | count(*) | +-----------+----------+ | 125 | 1 | | 150 | 1 | | 200 | 4 | | 225 | 1 | | 250 | 2 | | 300 | 1 | +-----------+----------+
上記の方法の利点は、データの追加/削除/変更に基づいてビンを自動的に変更することです。
ボーナスリード:MySQLでコンバージョン率を計算する方法
MySQLでヒストリグラムを作成するための最も柔軟な方法
作成するヒストグラムビンがすでにわかっている場合、またはヒストグラムバケットのサイズが異なる場合は、CASEステートメントを使用して度数分布を作成できます。これがMySQLのヒストグラムクエリです
mysql> select "100-150" as TotalRange,count(sale) as Count from sales where sale between 100 and 150 union ( select "150-200" as TotalRange,count(sale) as Count from sales where sale between 150 and 200) union ( select "200-225" as TotalRange,count(sale) as Count from sales where sale between 200 and 225) union ( select "225-250" as TotalRange,count(sale) as Count from sales where sale between 225 and 250); +------------+-------+ | TotalRange | Count | +------------+-------+ | 100-150 | 2 | | 150-200 | 2 | | 200-225 | 4 | | 225-250 | 3 | +------------+-------+
このクエリでは、ヒストグラムバケットを任意の範囲に変更できます。間隔が均一である必要はありません。このクエリは、バケットが5〜10個ある場合にうまく機能します。
ボーナスリード:MySQLで欠落している日付を埋める方法
MySQLで度数分布を作成したら、グラフ作成ツールを使用してそれを縦棒グラフにプロットできます。これがUbiqを使用して作成されたグラフです。
ちなみに、MySQLデータベースからチャート、ダッシュボード、レポートを作成したい場合は、Ubiqを試すことができます。 14日間の無料トライアルを提供しています。