私はSQLを初めて使用し、このフォーラムはこれまでの私のライフラインでした。この素晴らしいプラットフォームで作成して共有していただきありがとうございます。
私は現在、大規模なデータセットに取り組んでおり、いくつかのガイダンスをいただければ幸いです。
データテーブル(existing_table)には400万行あり、次のようになります。
id date sales_a sales_b sales_c sales_d sales_e
同じ日付の行が複数あることに注意してください。
私がやりたいのは、このテーブルにさらに5つの列(、など)を追加することですcumulative_sales_a
。この列にcumulative_sales_b
は、特定の日付までのa、b、cなどの累積売上高が含まれます(これは日付ごとにグループ化されます)。これを行うために次のコードを使用しました。
create table new_cumulative
select t.id, t.date, t.sales_a, t.sales_b, t.sales_c, t.sales_d, t.sales_e,
(select sum(x.sales_a) from existing_table x where x.id = t.id and x.date <= t.date) as cumulative_sales_a,
(select sum(x.sales_b) from existing_table x where x.id = t.id and x.date <= t.date) as cumulative_sales_b,
(select sum(x.sales_c) from existing_table x where x.id = t.id and x.date <= t.date) as cumulative_sales_c,
(select sum(x.sales_d) from existing_table x where x.id = t.id and x.date <= t.date) as cumulative_sales_d,
(select sum(x.sales_e) from existing_table x where x.id = t.id and x.date <= t.date) as cumulative_sales_e
from existing_table t
group by t.id, t.date;
このクエリを実行する前に、列'id'にインデックスを作成しました。
目的の出力が得られましたが、このクエリが完了するまでに約11時間かかりました。
私はここで何か間違ったことをしているのか、そしてそのようなクエリを実行するためのより良い(そしてより速い)方法があるのかどうか疑問に思っていました。
ご協力ありがとうございました。