【发布时间】:2017-01-04 22:58:13
【问题描述】:
我有一个保存用户数据的 Rails 应用程序(在一个恰当命名的 user_data 对象中)。我想显示一个汇总表,显示过去 12 个月每月创建的总用户数和仍然活跃的用户数(状态 = '活跃')。
在针对我的 Postgres 数据库的 SQL 中,我可以通过以下查询获得我想要的结果(我在其中使用的日期由应用程序计算,因此您可以忽略该方面):
SELECT total.creation_month,
total.user_count AS total_count,
active.user_count AS active_count
FROM
(SELECT date_trunc('month',"creationDate") AS creation_month,
COUNT("userId") AS user_count
FROM user_data
WHERE "creationDate" >= to_date('2015 12 21', 'YYYY MM DD')
GROUP BY creation_month) AS total
LEFT JOIN
(SELECT date_trunc('month',"creationDate") AS creation_month,
COUNT("userId") AS user_count
FROM user_data
WHERE "creationDate" >= to_date('2015 12 21', 'YYYY MM DD')
AND status = 'Active'
GROUP BY creation_month) AS active
ON total.creation_month = active.creation_month
ORDER BY creation_month ASC
如何使用 ActiveRecord 编写此查询?
我之前在我的显示中只显示了按月分组的总用户数,但我正在为如何添加额外的活跃用户数列而苦恼。
我的应用程序在 Ruby 2.1.4 和 Rails 4.1.6 上。
【问题讨论】:
标签: ruby-on-rails postgresql join activerecord count