質問: 前提・実現したいこと ---------- この度はお世話になります。 現在Railsで毎日の学習時間を計測して勉強の記録を残す仕組みを作っております。 1日1回の計測とは限りませんので、人によっては1日2~3回の学習時間のレコードがあるかと思います。 今、この学習の記録を1年単位or1ヵ月単位で日別にグラフで表示しようとしていますが、なかなかいい方法が思い浮かびません。 試したこと ----- 学習時間記録のモデルに学習時間を保存できるようにし、そのレコードのcreated_atで並び変えて表示しようかと思いました。 学習時間の表示はLazyHighchartを使うことまでを考えましたが、 「レコードを日付の若い順に並び替え、もし同じ日付のレコードが複数あったらそれらのレコードの学習時間を全てまとめて一つの値とする。学習時間が計測されなかった日のデータを0と扱う」 という仕組みがどうしても思い浮かびません。 何かいい案をお持ちの方はご教示いただけると幸いでございます。 どうぞよろしくお願いいたします。
回答: はじめまして 先の回答者の方が書いておられますが、これはDB、SQL文の担当だと思います。 Rubyは詳しくないですが、クエリーを作成後、Ruby側からSQL実行だと思います。 between 月曜の00:00:00 and 日曜23:59:59 ごとにSUM(学習時間)集計 または data型で日付ごとにGROUP BY し、SUM(学習時間)集計 私であれば1年単位or1ヵ月単位に加え、日付ごとの集計機能も追加しておきます。 で、これらを保持するテーブルも3つ用意して、期日過ぎ、月初め、年初めごとに追記しておきます。 ただしここからは設計の話になるのですが **日付をまたいだ場合の学習時間の切り分け、考え方を考慮する** など、決め事は必要ですね。