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

MySQLで現在の合計を計算する方法

    MySQLには、累計としても知られる累積合計を計算する機能がありません。 MySQLで累積合計を計算するには、SQLクエリを作成する必要があります。それでは、SQLクエリを見て、MySQLの現在の合計を計算してみましょう。

    MySQLで現在の合計を計算する方法

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

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

    このテーブルの現在の合計を次のように計算するとします。

    +------------+------+-----------------+
    | order_date | sale | cumulative_sale |
    +------------+------+-----------------+
    | 2020-01-01 |   20 |              20 |
    | 2020-01-02 |   25 |              45 |
    | 2020-01-03 |   15 |              60 |
    | 2020-01-04 |   30 |              90 |
    | 2020-01-05 |   20 |             110 |
    +------------+------+-----------------+
    

    ボーナスリード:MySQLで複数の行を1つのフィールドに連結する方法

    MySQLで現在の合計を計算するためのSQLクエリは次のとおりです。

    mysql> set @csum := 0;
    mysql> select order_date,sale, (@csum := @csum + sale) as cumulative_sale
           from sales
           order by order_date;
    +------------+------+-----------------+
    | order_date | sale | cumulative_sale |
    +------------+------+-----------------+
    | 2020-01-01 |   20 |              20 |
    | 2020-01-02 |   25 |              45 |
    | 2020-01-03 |   15 |              60 |
    | 2020-01-04 |   30 |              90 |
    | 2020-01-05 |   20 |             110 |
    +------------+------+-----------------+
    

    上記のクエリでは、最初にユーザー定義変数csumを0に設定します。これを使用して、各行の現在の合計を格納します。 csumはどのテーブルにも格納されないことに注意することが重要です。単に現在の合計値を表示するために使用されます。

    この現在の合計を保存する場合は、テーブルに新しい列を追加し、UPDATE句を使用して現在の合計値を保存できます。

    mysql> alter table sales add column cumulative_sum int;
    
    mysql> set @csum := 0;
    
    mysql> update sales
           set cumulative_sum = (@csum := @csum + sale)
           order by order_date;
    
    mysql> select order_date,sale,cumulative_sum from sales;
    +------------+------+----------------+
    | order_date | sale | cumulative_sum |
    +------------+------+----------------+
    | 2020-01-01 |   20 |             20 |
    | 2020-01-02 |   25 |             45 |
    | 2020-01-03 |   15 |             60 |
    | 2020-01-04 |   30 |             90 |
    | 2020-01-05 |   20 |            110 |
    +------------+------+----------------+
    

    ボーナスリード:MySQLに合計行を追加する方法

    次に示すように、WHERE句またはJOINSを使用してSQLクエリをカスタマイズすることもできます。

    mysql> set @csum := 0;
    mysql> select order_date,sale, (@csum := @csum + sale) as cumulative_sale
           from sales where <condition>
           order by order_date;
    
    
    

    MySQLには現在の合計の組み込み関数がないため、上記のSQLクエリを使用してMySQLの合計を実行できます。 MONTH(order_date)を使用することもできます order_dateの代わりに 月ごとの累積合計のSQLを記述したい場合は、上記を参照してください。

    累計を計算したら、グラフ作成ツールを使用してこのデータを折れ線グラフにプロットし、チームと共有できます。これは、Ubiqを使用して作成された現在の合計を示す折れ線グラフの例です。

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

    1. OracleSQLDeveloper-ドロップされたテーブルをリカバリする方法

    2. UNION複数のストアドプロシージャの結果

    3. SQLAlchemyを使用して、selectステートメントの列としてサブクエリを使用してSQLを生成します

    4. SQLの大文字と小文字を区別する文字列の比較