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

时间:2014-12-12 10:17:43

标签: mysql ruby-on-rails ruby

我有以下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 dev,但我必须在Rails中工作)。有关如何使用Rails方法构建此查询的任何想法?

修改

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

weblogs.all.group(title).count

以下列出了每个网站的唯一身份用户数:

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

有没有办法将这些组合成一个查询?

1 个答案:

答案 0 :(得分:2)

这将有效:

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

您还可以执行自定义SQL查询 Rails 3 execute custom sql query without a model