繁体   English   中英

如何使用Active Record执行SQL之类的查询(计数,组,顺序)

[英]How to do SQL like queries with Active Record (count, group, order)

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

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

我的尝试:创建一个表,该表按状态和月份对我的用户操作对象进行计数,如下所示:

想要View中的最终输出:

<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

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

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)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM