0

私はレールの初心者であり、Excelで同じ面倒なレポートを作成するのをやめ、マーケティング分析ダッシュボードを作成したいと考えています。

私は、created_at、marketing_source、purchases、およびrevenueを持つユーザーモデルを持っています。

私がSQLでやりたいことは

select marketing_source, weekofyear(created_at), count(id), sum(revenue) 
from User 
where weekofyear(created_at) between # and #
group by marketing_source, weekofyear(created_at)

そして、これを表として私のページに印刷します。

どこでどのように変換を行うのか正確にはわかりません。私はこれを経由しますか

sql.execute 

コントローラコードで?rakeタスクを作成してcsvを作成してから、javascriptを使用してcsvを読み取り、テーブルを印刷する必要がありますか?

どんな方向でも大歓迎です。

4

1 に答える 1

2

Railsへようこそ

Railsを初めて使用する場合は、railscasts.comhttp://guides.rubyonrails.org/を確認してください。

Railsでは、このようなSQLステートメントを記述する必要はありません。

データベースの移行が完了し、データベースに必要なすべての列があることを前提としています

あなたのusers_controllerでは、これはあなたが望むことをするだろうと思います。

def index
 @users = User.where
 (["created_at >= ? AND created_at <= ?", yesterday.beginning_of_day, yesterday.end_of_day]).
 group("marketing_source")
end

次に、対応するビューで/views/users/index.html.erb

<table>
  <tr>
    <th>Name</th>
    <th>revenue</th>
    <th>Marketing source</th>
  </tr>

<% @users.each do |user| %>
  <tr>
    <td><%=h user.name %></td>
    <td><%=h user.revenue %></td>
    <td><%=h user.marketing_source %></td>
    <td><%= link_to 'Show', user %></td>
    <td><%= link_to 'Edit', edit_user_path(user) %></td>
    <td><%= link_to 'Destroy', user, :confirm => 'Are you sure?', :method => :delete %></td>
  </tr>
<% end %>
</table>
于 2012-10-22T20:46:33.227 に答える