2017-07-25 16 views
0

例えば201702にそれが今、私は次のクエリ持っ201603 累積和

201702.の合計を表示する必要があり、私は、そう過去12ヶ月間の累積和を作るしようとしています:

select date, 
     product, 
     sum(sales) over (partition by product order by date) as cumulative 
FROM sales 

データは、このようなものです:

Date \t Product \t Sales \t Sales Acum 
 
201601 \t 1 \t 7648 \t 7648 
 
201602 \t 1 \t 5538 \t 13186 
 
201603 \t 1 \t 7659 \t 20845 
 
201604 \t 1 \t 6943 \t 27788 
 
201605 \t 1 \t 7604 \t 35392 
 
201606 \t 1 \t 4398 \t 39790 
 
201607 \t 1 \t 3261 \t 43051 
 
201608 \t 1 \t 3040 \t 46091 
 
201609 \t 1 \t 5637 \t 51728 
 
201610 \t 1 \t 5520 \t 57248 
 
201611 \t 1 \t 8554 \t 65802 
 
201612 \t 1 \t 4794 \t 70596 
 
201701 \t 1 \t 6704 \t 69652 
 
201702 \t 1 \t 2234 \t 66348 
 
201703 \t 1 \t 4093 \t 62782 
 
201704 \t 1 \t 4171 \t 60010 
 
201705 \t 1 \t 6741 \t 59147 
 
201706 \t 1 \t 2902 \t 57651 
 
201601 \t 2 \t 582 \t 582 
 
201602 \t 2 \t 2393 \t 100416 
 
201603 \t 2 \t 4614 \t 105030 
 
201604 \t 2 \t 2611 \t 107641 
 
201605 \t 2 \t 6891 \t 114532 
 
201606 \t 2 \t 4409 \t 118941 
 
201607 \t 2 \t 5454 \t 124395 
 
201608 \t 2 \t 7927 \t 132322 
 
201609 \t 2 \t 6797 \t 139119 
 
201610 \t 2 \t 6740 \t 145859 
 
201611 \t 2 \t 8077 \t 153936 
 
201612 \t 2 \t 5143 \t 159079 
 
201701 \t 2 \t 6383 \t 67439 
 
201702 \t 2 \t 1593 \t 66639 
 
201703 \t 2 \t 5352 \t 67377 
 
201704 \t 2 \t 4065 \t 68831 
 
201705 \t 2 \t 7434 \t 69374 
 
201706 \t 2 \t 2332 \t 67297

+4

美しい。それでは何が問題なの? –

+4

[DBMS](https://en.wikipedia.org/wiki/DBMS)はどちらを使用していますか? Postgres?オラクル? –

+2

**あなたの質問を** [編集] **し、そのデータに基づいてサンプルデータと予想される出力を追加してください。 [**フォーマットされたテキスト**](http://stackoverflow.com/help/formatting)、** **スクリーンショットはありません**(http://meta.stackoverflow.com/questions/285551/why-may -i-not-upload-images-of-code-on-so-asking-a-question/285557#285557)。 ** [編集] **あなたの質問 - コメントを投稿するコードや追加情報はありません**。 –

答えて

0

昨年の売上のみに関する情報を取得する場合は、WHERE句の適切な条件が存在する必要があります。 Oracleの場合 次のクエリを使用することができます。

SELECT date, 
    product, 
    sum(sales) over (partition by product order by date) as cumulative 
FROM sales 
WHERE date >= add_months(sysdate, -12) 
0

がそこには欠けている月はありません、あなたは、各製品の総売上をしたい、あなたは次のクエリを使用したと仮定すると -

SELECT "Date" 
    , "Product" 
    , "Sales" 
    , SUM("Sales") OVER (PARTITION BY "Product" ORDER BY "Date" ROWS BETWEEN 11 PRECEDING AND CURRENT ROW) AS Cumulative 
FROM Sales; 

SQLFiddle