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

月ごとの製品売上を比較するSQLクエリ

    多くの場合、商品の売り上げを月ごとに並べて比較し、商品の売り上げを判断する必要があります。データがMySQL/PostgreSQL / SQL Serverデータベースに保存されている場合に、月ごとに製品の売上を比較するSQLクエリを次に示します。

    月ごとの製品売上を比較するSQLクエリ

    テーブルsales(order_date、product、sale)があるとします。 すべての製品の毎日の売り上げが含まれています。

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

    月ごとの製品売上を比較するSQLクエリ

    ほとんどの場合、すべての製品の販売行が、個別の列ではなく、個別の行に上下に表示されます。製品の売上を月ごとに比較する場合は、このデータを製品ごとにピボットする必要があります。 列。

    製品ごとに販売テーブルをピボットするためのクエリは次のとおりです。 桁。詳細を見ていきます

    mysql> SELECT date_format(order_date,'%b-%y') as order_date,
           sum(IF(product='Pen', sale, NULL)) AS Pen,
           sum(IF(product='Paper', sale, NULL)) AS Paper
           FROM sales
           GROUP BY year(order_date),month(order_date),date_format(order_date,'%b-%y')
           ;
    +------------+------+-------+
    | order_date | Pen  | Paper |
    +------------+------+-------+
    | Jan-20     |  200 |   320 |
    | Feb-20     |  250 |   220 |
    | Mar-20     |  230 |   290 |
    | Apr-20     |  190 |   210 |
    | May-20     |  210 |   230 |
    | Jun-20     |  320 |   120 |
    | Jul-20     |  330 |   220 |
    | Aug-20     |  210 |   260 |
    | Sep-20     |  120 |   220 |
    | Oct-20     |  280 |   120 |
    | Nov-20     |  290 |   280 |
    | Dec-20     |  200 |   320 |
    +------------+------+-------+
    

    上記のクエリでは、DATE_FORMAT関数を使用して、 order_dateから月の名前を取得します。 桁。さらに、IFステートメントを使用します productごとにピボットテーブルを作成するには 桁。この場合、各行について、IFステートメントは製品列の値をチェックし、製品名に応じて「ペン」または「紙」というラベルの付いた列に販売値を追加します。また、月の名前でGROUP BYを実行して、毎日の注文から毎月の製品売上を取得します。

    製品ごとの月間売上高を計算したら、以下に示すように、グラフ作成ツールを使用して折れ線グラフにプロットできます。これは、Ubiqを使用して作成された折れ線グラフの例です。

    ドラッグアンドドロップするだけでUbiqでピボットテーブルを作成できることをご存知ですか?

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

    1. Oraclejdbcクライアントのデフォルトのnls_date_formatを変更する方法

    2. 外部キー制約付きテーブルを切り捨てる方法は?

    3. クエリの説明プランをどのように解釈しますか?

    4. Postgresqlでは、2つの列の組み合わせに一意を強制します