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

赤方偏移で現在の合計を計算する方法

    累積合計は、現在の合計とも呼ばれ、時間の経過に伴う合計値を監視するための便利なKPIメトリックです。データがAmazonRedshiftに保存されている場合、Redshiftで累積合計を計算するのは非常に簡単です。 Redshiftで現在の合計を計算する方法を見てみましょう。

    赤方偏移で現在の合計を計算する方法

    Redshiftで現在の合計を計算する手順は次のとおりです。次の表に1日の売り上げが含まれているとします

    postgres-#> create table sales(order_date date,sale int);
    
    postgres-#> insert into sales values('2020-03-01',30),
    ('2020-03-02',35),('2020-03-03',25),('2020-03-04',40),('2020-03-05',30);
    
    postgres-#> select * from sales;
    +------------+------+
    | order_date | sale |
    +------------+------+
    | 2020-03-01 |   30 |
    | 2020-03-02 |   35 |
    | 2020-03-03 |   25 |
    | 2020-03-04 |   40 |
    | 2020-03-05 |   30 |
    +------------+------+
    

    たとえば、売上の累積合計を計算したいとします。

    +------------+------+-----------------+
    | order_date | sale | cumulative_sale |
    +------------+------+-----------------+
    | 2020-03-01 |   30 |              30 |
    | 2020-03-02 |   35 |              65 |
    | 2020-03-03 |   25 |              90 |
    | 2020-03-04 |   40 |             130 |
    | 2020-03-05 |   30 |             160 |
    +------------+------+-----------------+

    Redshiftで現在の合計を計算するためのSQLクエリは次のとおりです。 Redshiftは基本的にPostgreSQLであるため、そのすべての関数と式はPostgreSQLで使用できます。そのため、PostgreSQLで利用可能なウィンドウ関数を使用してこれを行います。

    postgres=# SELECT order_date
              , sum(sale) over (order by order_date asc rows between unbounded preceding and current row)
              FROM   sales
              ORDER  BY order_date;
    
     order_date | sum
    ------------+-----
     2020-03-01 |  30
     2020-03-02 |  65
     2020-03-03 |  90
     2020-03-04 | 130
     2020-03-05 | 160
    

    上記のクエリを詳しく見てみましょう。上記のSUM関数は、各行の累積合計を計算します。ただし、Redshiftで現在の合計を計算するために使用される行数を定義するのに役立つウィンドウ関数OVERを使用します。

    ボーナスリード:赤方偏移で移動平均を計算する方法

    まず、データを時系列で order_date順に並べ替えます。 累積合計ごとに正しい行を合計するようにします。次に、行ごとに、Redshiftに saleを合計するように指示します。 先行するすべての行の列。これは、ウィンドウ関数OVERを使用して行い、無制限の前の行と現在の行の間の行に言及します。 。つまり、各行について、累積合計については前の行のみを考慮してください。

    行ごとにウィンドウフレームが変わるため、前の行のみが現在の合計の計算に使用されます。

    Redshiftで現在の合計を計算する前にデータをフィルタリングする場合は、以下に示すように、WHERE句を追加することでフィルタリングできます。

    postgres=# SELECT order_date
              , sum(sale) over (order by order_date asc rows between unbounded preceding and current row)
              FROM   sales
              ORDER  BY order_date
              WHERE <condition>;

    ボーナスリード:PostgreSQLでピボットテーブルを作成する方法

    また、Redshiftは基本的にPostgreSQLであるため、上記のクエリを使用してPostgreSQLの現在の合計を計算することもできます。

    Redshiftで累積合計を計算した後、Redshiftデータ視覚化ツールを使用して折れ線グラフにプロットできます。これは、Ubiqを使用して作成された累積合計の折れ線グラフの例です。

    Redshiftデータベースからチャートとダッシュボードを作成する場合は、Ubiqを試すことができます。 14日間の無料トライアルを提供しています。

    1. Windows10ProfessionalへのOracle12cStandardEditionのインストール

    2. PHP-IN句配列でのPDOの使用

    3. JDeveloper / SQL Developerがクレデンシャルを永続化するために使用している暗号化技術を知っている人はいますか?

    4. SQL SELECT DISTINCT:パフォーマンスのベストプラクティス