実現したいこと
現在、ゴルフスコアアプリ制作中ですが、過去のラウンドの平均やベストスコアの機能を考えております。
具体的には、18個のデータ(hole_score)の合計をラウンドごとに算出し(トータルスコア)、トータルスコアの平均と最小を算出したい。
出来ていること
過去のスコア一覧はできており、各トータルスコアも取得出来ております。コードとしては下記になります。
#controller @score = Score.where(user_id: current_user).distinct.pluck(:course, :user_id, :round_id, :created_at ) @score_sum = Score.where(user_id: current_user).group(:round_id).sum(:hole_score) @score_ave = Score.where(user_id: current_user).average(:hole_score)
#view <h2>平均スコア</h2> <span><%= @score_ave %> </span><br> <% @score.zip(@score_sum) do |a,b| %> <%= link_to a[0], score_card_path(round_id: a[2]) %> <%= a[3].strftime('%Y年%-m月%-d日(%a)') %> <%= format('%+d', b[1] ) %><br> <% end %> <%= link_to "トップにもどる", root_path %> <br>
平均値も出ているには出ていますが、各hole_scoreの平均が出てしまっています。
上画像でいうと、
平均は(+0 -1)/2=-0.5
最小は、-1
としたい。
が、(+0 -1)/36 = -0.0278
となってしまっています。
36とは2ラウンド分のホール数です。
宜しくお願い致します。
別途ロジックで計算結果出せば良いのでは?
タイトルだけ見ると合計値もグループ化の結果なので
minなりaverageなり使えるものはあるでしょうけど、
「平均は(+0 -1)/2=-0.5
最小は、-1」
ならその計算をしてみれば良いと思うのですけど
その方法がわからないのです。
「平均は(+0 -1)/2=-0.5
最小は、-1」
これを書いたら良いのでは。そのまま計算式になってるように見えます。
(私はゴルフ詳しくないのでその計算方法で得たい結果が得られるか知らないですが)
???
スコアの平均て「 ラウンドのスコア」の平均では?
ホールのスコアの平均になってません?
0を17ホール 残りが1 が4ラウンドのとき、 平均は1 ですよね?
これですと 1/18 になるような。。。
回答1件
あなたの回答
tips
プレビュー