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

PostgreSQLでヒストグラムを作成する方法

    ヒストグラムは、データ分析とレポートで度数分布を視覚化し、洞察をすばやく得るのに役立ちます。 PostgreSQLでヒストグラムを作成する方法は次のとおりです。 PostgreSQLで度数分布を取得するためのいくつかの異なる方法を見ていきます。

    PostgreSQLでヒストグラムを作成する方法

    PostgreSQLでヒストグラムを作成する手順は次のとおりです。

    次のテーブルがあるとしますsales(order_date、sale)

    postgres=# create table sales(order_date date,sale int);
    
    postgres=# 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);
    
    postgres=# 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
    

    ボーナスリード:PostgreSQLでユーザーを作成

    PostgreSQLでヒストグラムを作成する

    PostgreSQLでヒストグラムを作成するための複数のPostgreSQLヒストグラムクエリがあります。それぞれを見ていきます。

    PostgreSQLでヒストグラムを作成する最も簡単な方法

    PostgreSQLヒストグラムのビンの間隔を等間隔(10〜20、20〜30、30〜40など)にする場合は、PostgreSQLで度数分布を作成するためのSQLクエリを次に示します。

    postgres=# 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

    ボーナスリード:PostgreSQL DROP VIEW

    postgres=# 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 |
    +-----------+----------+
    

    上記の方法の利点は、データの追加/削除/変更に基づいてビンを自動的に変更することです。また、新しいデータ用の新しいビンを作成したり、カウントが0になった場合にビンを削除したりします。したがって、PostgreSQLで動的にヒストグラムを作成できます。

    ボーナスリード:PostgreSQL Create Index

    PostgreSQLでヒストリグラムを作成するための最も柔軟な方法

    作成するヒストグラムビンがすでにわかっている場合、またはヒストグラムバケットのサイズが異なる場合は、CASEステートメントを使用して度数分布を作成できます。これがPostgreSQLのヒストグラムクエリです

    postgresql=# 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 |
    +------------+-------+
    

    このクエリでは、caseステートメントを使用して各販売値にバケットを割り当てます。ヒストグラムバケットは任意の範囲に変更できます。間隔を一定にする必要はありません。

    このクエリには2つの利点があります:

    1. バケット名は任意の名前に変更できます。たとえば、「100-150」を表示する代わりに、「100〜150」と表示できます
    2. バケットサイズが不均一になる可能性があります。たとえば、バケットサイズが50の100〜150のバケットと、バケットサイズが100の150〜250のバケットを作成できます。

    要件に応じて、上記の方法のいずれかを選択して、PostgreSQLでヒストグラムを作成できます。

    Ubiqを使用すると、データを数分で簡単に視覚化し、リアルタイムのダッシュボードで監視できます。今日お試しください。

    1. Excelを超えた5つの兆候

    2. SQLServerからのINSERTINTOを使用したSalesforceデータの変更

    3. SQLServer2005のアトミックUPSERT

    4. PostgreSQLでOracleデータベースにアクセスする方法