裏MySQL ユーザー変数を使って合計と平均も同時に計算する その4 番外編

番外編として、こういったテスト用のサンプルデータを生成するのは骨が折れるので、例によってinsert_generate_seriesを使ってデータ作ります。

  • 2012年01月のデータinsert_generate_seriesでランダムに作る
call insert_generate_series(
'report(report_date,imp,click,action,revenue)', concat(
  '("2012-01-01" + INTERVAL @num DAY),',
  'FLOOR(10000 + RAND() * (50000 - 10000)),',
  'FLOOR(imp    * FLOOR(1 + RAND()  * (2 -  1) ) / 100),', -- click:  imp     1〜10%
  'FLOOR(click  * FLOOR( 5 + RAND() * ( 7 -  5) ) / 100),', -- action: click   5〜 7%
  'FLOOR(action / FLOOR( 5 + RAND() * ( 7 -  5) ) * 100)'   -- revenue: action 5〜 7%
),
1,date_format(LAST_DAY('2011-01-01'),'%d'),1)
  • ついでにデータの作成に失敗した場合2012年01月のデータを削除します。
DELETE FROM report WHERE DATE_FORMAT(report_date, '%Y%m')=201201;