
月別と週別の売上げデータを、ユーザー毎で集計するSQL文を記述しております。
Salesが売上データ
Userが本システムを使って下さっているユーザー
月別の売上げデータでしたら、単純にGROUP BYだけでことがすんだのですが、
それに加えて、User毎でも集計しなくてはいけません。
GROUP BY date_format(created_at, '%Y-%m')
GROUP BYをふたつつかってSQL文を書いていたりしたのですが、上手くいかず、質問させて頂きました。
また、今回の実装はpythonのスクリプトでかいている(MySQLdbを使用)ため、
Userの一覧を取得するSQLを実行
↓
userの数だけループ
↓
ループの中で、月別の売上げデータで集計し、INSERTする
ということも考えましたが、Userの数はどんどんと増えていくため、
このやり方はあまり良くない気がしております。
DBの負荷をなるべく減らしてあげるようなSQL文を書けるようになりたいです。
宜しくお願いします。
追記
まだ、テーブル設計などをどうしようかという段階ですので、そもそも設計自体
きれいな形になっておりません。
| sales | CREATE TABLE `sales` ( `id` int(11) NOT NULL AUTO_INCREMENT, `user_id` int(11) DEFAULT NULL, `sales_price` int(11) DEFAULT NULL, `created_at` datetime NOT NULL, `updated_at` datetime NOT NULL, PRIMARY KEY (`id`), ) ENGINE=InnoDB DEFAULT CHARSET=utf8 | | users | CREATE TABLE `users` ( `id` int(11) NOT NULL AUTO_INCREMENT, `email` varchar(255) COLLATE utf8_unicode_ci NOT NULL DEFAULT '', `name` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, `created_at` datetime NOT NULL, `updated_at` datetime NOT NULL, PRIMARY KEY (`id`), ) ENGINE=InnoDB AUTO_INCREMENT=35 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci | MonthReport 'month_date' 'sum_price' 'user_id'
回答2件
あなたの回答
tips
プレビュー