SQL/Rails 从一组记录中返回唯一值的计数



我有以下SQL查询,它从表中提取唯一网站的数量,每个网站的记录数以及访问每个网站的唯一用户数。

"SELECT title, COUNT(DISTINCT user_id), COUNT(title) FROM weblogs GROUP BY title"

该表排列如下:

weblog_id | title | user_id
---------------------------
1         | BBC   | 1
2         | BBC   | 1
3         | BBC   | 2
4         | Sky   | 1
5         | Sky   | 1

上面的查询将返回:

title    | COUNT(DISTINCT user_id)   | COUNT(title)
---------------------------------------------------
BBC      | 2                         | 3
Sky      | 1                         | 2

虽然通过使用exec_query在Rails中执行SQL字符串,这在当前形式下工作,但我一直在努力使用Rails的查询方法复制相同的结果(我不是Rails开发人员,但我必须在Rails中工作)。关于如何使用 Rails 方法构建此查询的任何想法?

编辑

我可以使用两个单独的查询提取单个网站的总点击数和每个网站的唯一用户数。下面给出了每个网站的计数

weblogs.all.group(title).count

下面给出了每个网站的唯一用户数:

weblogs.all.group(title).distinct.count(user_id)

有没有办法将这些合并到一个查询中?

这将

起作用:

weblogs.all.group(title).select("COUNT(DISTINCT user_id), COUNT(title), title")

您还可以执行自定义 sql 查询Rails 3 在没有模型的情况下执行自定义 SQL 查询

最新更新