ヒストグラムは、データ分析とレポートで度数分布を視覚化し、洞察をすばやく得るのに役立ちます。 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つの利点があります:
- バケット名は任意の名前に変更できます。たとえば、「100-150」を表示する代わりに、「100〜150」と表示できます
- バケットサイズが不均一になる可能性があります。たとえば、バケットサイズが50の100〜150のバケットと、バケットサイズが100の150〜250のバケットを作成できます。
要件に応じて、上記の方法のいずれかを選択して、PostgreSQLでヒストグラムを作成できます。
Ubiqを使用すると、データを数分で簡単に視覚化し、リアルタイムのダッシュボードで監視できます。今日お試しください。