備忘録:SQLを使ってデータベースを集計する

業務システムを開発する場合、EXCELのVBAと、MySQLデータベースを利用すると簡単です。
簡単な計算はEXCELの関数やVBAを使用すると便利ですが、大量データの集計を行う場合は
随分と時間がかかります。これはVBAはパソコンで処理をするためです。

大量データを扱う場合は、SQLを利用することで、データベースサーバ側で集計するのが
懸命です。

簡単なSQLの例を掲載します。

sql = “SELECT IFNULL(sum(t_su_total),0) as sum_all FROM m_cstm,t_su where m_cstm_cd like ‘” & head_char & “%’ and m_cstm.m_cstm_cd = t_su.t_su_cstm_cd and t_su.t_su_yyyymm ='” & Range(“h5”) & “‘”

m_cstmという顧客マスターと、t_suという数値トランという2つのテーブルから、
m_cstm_cdという顧客コードの上一桁head_char毎にt_su_totalの値を集計するSQLです。
IFNULLを使ってt_su_totalがNullの場合も0をセットしてエラーにならない様にしています。
Whereの後には選択条件と、顧客マスター、数値トランを結び付ける条件を記載しています。

この集計をVBAで実施しようとすると、一旦条件にあうデータをデータベースから抜き出し、
集計作業をVBAで計算する事になるため、スピードがどうしても遅くなります。