登録ユーザー数(日別)のグラフを作成したい
Googleチャートを使用するので、使用するデータが必要です
登録ユーザーを日ごとにカウントする SQL クエリを作成しました
SELECT DATE(created_at), COUNT(DISTINCT id) amount
FROM users
GROUP BY DATE(created_at)
これにより、データとユーザー数のハッシュが返されます
{"date"=>"2013-09-24", "amount"=>"100"}
{"date"=>"2013-09-26", "amount"=>"1"}
{"date"=>"2013-10-01", "amount"=>"2"}
問題:
のように、新規ユーザーがいない日は 0 件の登録を表示したい
{"date"=>"2013-09-25", "amount"=>"0"}
(私はpgデータベースを使用しています。また、このクエリをレールアプリで使用しているため、ActiveRecordを使用してアドバイスをいただけますか)
**UPDATE**
私のレールアプリケーションでは、この問題をそのような方法で見つけました
#controller
def charts
users = User.select([:id, :created_at])
@data = users.where("created_at >= ?", Date.today - 1.month)
@inf = []
@date = []
month = Date.today - 1.month
month.upto(Date.today).each do |date|
@date << date.strftime('%d/%m')
@inf << @data.select{|u| u.created_at.to_date == date }.size
end
end
@inf
と配列に@date
は、登録ユーザーと日付の数があります。