2017-09-09 17 views
0

私はロールアップテーブルを作成しています。サイズのために、2002年から2017年まで毎年実行する必要があります。これは問合せやストアドプロシージャとして実行できますが、問題はありません。mysqlクエリのwhere値をインクリメントする

年を変更する各クエリを循環させる方法があることは知っています。

何か助けていただければ幸いです。

insert into rollup_rb_period_earnings(account_name,song_title,deal_id,period,total_amount) 
select account_name, song_title,deal_id,period_year_quarter,SUM(royalty_amount) 
FROM royalty_stream 
WHERE period_year = 2002 
GROUP BY account_name, song_title,deal_id,period_year_quarter; 

答えて

0

あなたはちょうどあなたが必要な年を持っているwhere句を修正します:

insert into rollup_rb_period_earnings(account_name, song_title, deal_id, period, total_amount) 
    select account_name, song_title, deal_id, period_year_quarter, sum(royalty_amount) 
    from royalty_stream 
    where period_year between 2002 and 2017 
    group by account_name, song_title, deal_id, period_year_quarter; 
+0

をいいえ、私は、それぞれが別のクエリする必要があります。テーブルが大きすぎて1つのクエリしか実行できないため、別のステートメントに分割する必要があります。 –

+0

@SeanPeace 。 。それは私にはばかげて聞こえる。テーブルの大きさはどれくらいですか? –

+0

私は、このような単純なwhere節で試していないと失敗したかどうか尋ねていません。 royalty_streamテーブルは75Gで、193,885,384行あります。サーバーには20Gのメモリーがあります。 1つのクエリが失敗したため、クエリを手動でチャンクに分割する必要がありました。ロールアップテーブルは単独で4.7Gです。 –

関連する問題