2013-10-15 3 views
0

У меня есть таблица user_questions (UserQuestion model) и таблица user_answers (модель UserAnswer), и у них есть данные в этом формате.Rails 3.1 Соотношение среднее

   user_questions table: 
+------+-----------------------------------------------------+---------------------+ 
| id | question           | created_at   | 
+------+-----------------------------------------------------+---------------------+ 
| 1 | Is question asker is a fool?    | 2011-03-12 03:23:44 | 
| 2 | have we got an answer yet?     | 2011-03-12 03:24:06 | 
+------+-----------------------------------------------------+---------------------+ 


      user_answers table: 
+------+-------+------------------+---------------------+ 
| id | value | user_question_id | created_at   | 
+------+-------+------------------+---------------------+ 
| 1 | Yes he is! |    1 | 2011-03-12 04:23:44 | 
| 2 | OC he is! |    1 | 2011-03-12 05:23:44 | 
| 3 | yup he is! |    1 | 2011-03-12 05:23:44 | 
+------+-------+------------------+---------------------+ 

Теперь мне нужно найти средний возраст вопросов т.е. avg(user_question.created_at - min(user_answers.created_at))

С учетом указанных выше данных: С user_question (1) получил свой первый ответ ровно 1 час, так что его возраст составляет: 1 час

так как user_question (2) еще не получил ответа, его возраст (DateTime.now - user_question.created_at (скажем, его 1000 часов)).

result_output = (1 + 1000)/2

Я довольно хорошо знаком с тузда суммой, срд, мин, не более операциями. Но, к сожалению, очень сложно здесь, чтобы получить окончательное решение с помощью рельсов.

+0

так, в чем вопрос? – rb512

ответ

1

Возможно, вам не понравится этот ответ, но я рекомендую придерживаться w/SQL. Вы должны иметь возможность использовать оператор if в своем sql, чтобы сделать пользователей без ответов равными 0. Я имел дело с подобной проблемой некоторое время назад и обнаружил, что sql был намного более предварительным.

+0

Да, даже мое чувство кишки - мне придется придерживаться w/sql, давайте подождем некоторое время, может быть, кто-то там, у кого есть подход Rails для него. –