中央値を計算すると、データの中間値を見つけ、極端な値によるノイズを回避するのに役立ちます。 Percentile_contを使用してPostgreSQLで中央値を計算する方法は次のとおりです。 PostgreSQLには中央値を計算する関数がないため
PostgreSQLで中央値を計算する方法
PostgreSQLで中央値を計算する組み込み関数がないため、50パーセンタイル値を計算してPostgreSQLで中央値を計算します。
次のテーブルがあるとしますsales(order_date、amount)
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',25), ('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 | 25 2020-04-07 | 215 2020-04-08 | 300 2020-04-09 | 250
ボーナスリード:PostgreSQLで移動平均を計算する方法
これが中央値を見つけるためのクエリです。つまり、PostgreSQLで50パーセンタイルを計算します。
postgres=# SELECT PERCENTILE_CONT(0.5) WITHIN GROUP(ORDER BY sale) FROM sales; percentile_cont ----------------- 212.5
上記のクエリでは、 Percentile_contを使用します 計算するパーセンタイル(たとえば、50パーセンタイルである0.5)を定義できる関数。次に、WITHIN GROUP句を使用して、 saleのグループ内のパーセンタイルを計算するようにPostgreSQLに指示します。 値。また、ORDER BY句を使用して、PostgreSQLに saleを並べ替えるように指示します。 中央値を計算する前の値。
percentile_contを使用する場合 、PostgreSQLは中央値を2つの中間値(210,215)の平均として補間します。
ボーナスリード:PostgreSQLテーブルにCSVファイルをインポートする方法
PostgreSQLに補間させたくないが、最も近い値のみを返す場合は、 Percentile_discを使用します。 代わりは。これが例です
postgres=# SELECT PERCENTILE_DISC(0.5) WITHIN GROUP(ORDER BY sale) FROM sales; percentile_disc ----------------- 210
各グループのPostgreSQLで中央値を計算する場合は、以下に示すようにGROUPBY句を使用します。 販売としましょう テーブルにはproductも含まれています 製品名の列。その場合、次のクエリを使用して各製品の中央値を計算できます。
postgres=# SELECT PRODUCT, PERCENTILE_CONT(0.5) WITHIN GROUP(ORDER BY sale) FROM sales GROUP BY PRODUCT;
ボーナスリード:PostgreSQLで月ごとの成長を計算する方法
PostgreSQLで中央値を計算した後、PostgreSQLレポートツールを使用して、中央値と販売値を折れ線グラフにプロットして、差異を分析できます。そのために、計算された中央値を元の売上と結合します 以下に示す表
postgres=# select * from sales, (SELECT PERCENTILE_CONT(0.5) WITHIN GROUP(ORDER BY sale) FROM sales) temp order by order_date; order_date | sale | percentile_cont ------------+------+----------------- 2020-04-01 | 210 | 212.5 2020-04-02 | 125 | 212.5 2020-04-03 | 150 | 212.5 2020-04-04 | 230 | 212.5 2020-04-05 | 200 | 212.5 2020-04-06 | 25 | 212.5 2020-04-07 | 215 | 212.5 2020-04-08 | 300 | 212.5 2020-04-09 | 250 | 212.5 2020-04-10 | 220 | 212.5
これは、Ubiqを使用してプロットされた中央値とともに1日の売上高を示す折れ線グラフです
PostgreSQLデータベースからチャート、ダッシュボード、レポートを作成したい場合は、Ubiqを試すことができます。 14日間の無料トライアルを提供しています。