如何使用活动记录(计数、组、顺序)执行类似SQL的查询

如何使用活动记录(计数、组、顺序)执行类似SQL的查询,sql,ruby,activerecord,sinatra,Sql,Ruby,Activerecord,Sinatra,我正在学习AR,并试图通过查询我的数据库来构建一个类似Excel的表。如果能为我的难题找到一个有效的查询,我将不胜感激 我的假设:我已经确定了正确的SQL查询,但在将其转换为AR能够理解并且可以在视图中轻松迭代的查询时遇到了问题 我的尝试:创建一个表,按状态和月份按降序排列我的用户操作对象计数,如下所示: 想要查看最终输出: 我认为您的查询相当于以下内容:- SELECT user_state, month_part, count(*) AS month_part_total FROM acti

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

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

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

想要查看最终输出:
我认为您的查询相当于以下内容:-

SELECT user_state, month_part, count(*) AS month_part_total
FROM actions
GROUP BY user_state, month_part
正如在where子句中一样,您正在从同一个表中检查user_状态

对于此查询,应使用以下方法:

Action.select("user_state, month_part, count(*)").group(:user_state, :month_part)
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
Action.select("user_state, month_part, count(*)").group(:user_state, :month_part)