我有一个 user_questions 表(UserQuestion 模型)和 user_answers 表(UserAnswer 模型),他们有这种格式的数据。
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 小时))。
结果_输出 = (1 + 1000)/2
我对 mysql sum、avg、min、max 操作非常熟悉。但不幸的是,在这里很难通过 rails join 运算符获得最终解决方案。