2013-10-15 57 views
0

我有一個user_questions表(UserQuestion模型)和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

我非常熟悉的MySQL之和,平均,最大,最小的操作。 但不幸的是,在這裏掙扎非常糟糕,最終解決了rails加入運算符的問題。

+0

那麼,有什麼問題? – rb512

回答

1

你可能不喜歡這個答案,但我建議堅持w/SQL。你應該可以在你的sql中使用if語句來讓用戶不會將答案設置爲0.我剛剛處理了一個類似的問題,發現sql更加優化。

+0

是的,即使我的直覺是我將不得不堅持w/sql,讓我們等待一段時間,也許有人在那裏有一個Rails的方法。 –