статистика по созданным моделям - PullRequest
0 голосов
/ 20 августа 2010

Я пытаюсь найти эффективный способ предоставления данных для сценария построения графиков jqplot количества кликов по определенной модели

У меня есть основная модель: список кликов has_many для каждого клика есть метка датыКак я могу получить количество кликов, созданных для каждого дня в диапазоне дат?

Ответы [ 2 ]

0 голосов
/ 20 августа 2010
date_from = Date.parse '2010-06-01'
date_to = Date.parse '2010-07-01'
click_counts = (date_from..date_to).map{|date|
  [date, Click.count(:conditions => {:date_stamp => date})]
}

вернет массив пар [date, count] за указанный период.Однако при этом будет выполняться запрос к базе данных для каждого дня в диапазоне дат.

Одним из распространенных решений для решения таких запросов является создание таблицы базы данных, заполненной всеми датами (скажем, за предыдущие и следующие 10 лет с этого момента).), а затем выполните JOIN, аналогично:

SELECT d.date, COUNT(c.date_stamp)
FROM dates d
LEFT JOIN clicks c ON d.date = c.date_stamp
GROUP BY d.date

, который вернет все количество кликов в одном запросе.

Или, в качестве третьего решения, вы можете получитьколичество кликов для существующих дат:

Click.find(:all,
  :select => "date_stamp, count(*) as count",
  :group => 'date_stamp',
  :conditions => ["date_stamp >= ? and date_stamp < ?", date_from, date_to])

и добавление «пустых» дней в Ruby.

0 голосов
/ 20 августа 2010
def number_of_clicks
    start_date = Date.strptime(params[:start_date],"%d/%m/%Y")
    end_date = Date.strptime(params[:end_date],"%d/%m/%Y") 
    options = {conditions = ["date_stamp > ? and date_stamp < ?", start_date, end_date}
    Listing.find(:all, options).size
 end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...