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

PostgreSQLで中央値を計算する方法

    中央値を計算すると、データの中間値を見つけ、極端な値によるノイズを回避するのに役立ちます。 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日間の無料トライアルを提供しています。

    1. Javaでの並行コレクションAPIの概要

    2. 効果的かつ簡単な方法で階層、親子関係を達成する

    3. ORA-24550:シグナルを受信しました:[si_signo=6]エラー

    4. MariaDB JSON_CONTAINS()の説明