研究データの集計/統計のためにMySQLを使い始めました。
扱うデータはcsvにしてあるのでExcelが使えれば一番楽だったのですが、
行数が多くて読み込めませんでした(´・ω・`)
で、次に「R」という、統計処理のためのソフトウェアを使おうと思ったら
これも行数が多いせいか読み込めませんでした。
(読み込みの状態で固まる。待ってればいずれ読み込み終わるのかな?)
Perlで地道にプログラム書いてこうかとも思いましたが、やはりめんどくさいのでやめて
今度はデータベースに手を出した、というわけです。
しかしデータベースってのはさすがですね。
数百万行もデータがあっても一瞬で処理してくれますw
ところで、データベースって累積集計には向いてないんでしょうかね?
一行ごとに累積を出してみようと以下のような問い合わせを考えてみましたが、
これだと行数の二乗のオーダーになってしまいます。
/* id,valueというフィールドを持つテーブルtableを仮定 */
select id,value,
( select sum(b.value) from table b where b.id <= a.id)
from table a;
データ量が少なければこれでも良いのでしょうけど、行数が百万とかになると計算量が兆単位に・・・。ひぃ。
それとも、もっと良いやり方があるのでしょうか。
「実はこんなやり方があるよー」とかあったら、是非指南してください(`・ω・´)ノ
0 件のコメント:
コメントを投稿