sql >> データベース >  >> RDS >> Mysql

MySQLでヒストグラムを作成する方法は?

    ヒストグラムは、データから度数分布をプロットし、洞察をすばやく引き出すのに役立ちます。 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日間の無料トライアルを提供しています。

    1. SQL SELECT IN

    2. OracleのREPLACE()関数

    3. シーケンスがPostgresに存在するかどうかを確認します(plpgsql)

    4. SQL ServerでのATN2()の例