如何使用Active Record(计数,组,顺序)进行SQL查询

时间:2014-04-20 15:53:40

标签: sql ruby activerecord sinatra

我正在学习AR并尝试通过对我的数据库的查询来构建类似Excel的表。对于为我的难题找到有效的查询,我将不胜感激。

我的假设:我已经确定了正确的SQL查询,但是在将其转换为AR理解的查询以及我可以在我的视图中轻松迭代时遇到问题。

我的尝试:创建一个包含我的用户操作对象的表按状态和月份排序的操作对象,如下所示:

想要查看最终输出:

<table>
User_State   Jul-13   Aug-13 Sept-13 Total
FL           10       5      5       20
NY           5        5      5       15
</table>

我的示例对象(输入):

#<Action id: 1, user_state: "FL", month_part: 2013-07-01, first_name: "John">
#<Action id: 2, user_state: "FL", month_part: 2013-07-01, first_name: "Mike">
#<Action id: 3, user_state: "NY", month_part: 2013-07-01, first_name: "Jim">

我尝试了什么:

SELECT user_state, month_part, count(*) AS month_part_total
FROM actions
WHERE user_state IN
    (SELECT DISTINCT (user_state)
    FROM actions)
GROUP BY user_state, month_part

1 个答案:

答案 0 :(得分:0)

我认为您的查询等同于以下内容: -

SELECT user_state, month_part, count(*) AS month_part_total
FROM actions
GROUP BY user_state, month_part

where子句中,您从同一个表中检查user_state

对于此查询,以下操作应该起作用:

Action.select("user_state, month_part, count(*)").group(:user_state, :month_part)