【问题标题】:SQL/Rails return count of unique values from a group of recordsSQL/Rails 从一组记录中返回唯一值的计数
【发布时间】:2014-12-12 10:17:43
【问题描述】:

我有以下 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)

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

【问题讨论】:

    标签: mysql ruby-on-rails ruby


    【解决方案1】:

    这将起作用:

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

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

    【讨论】:

    • 非常感谢,正是我想要的。我想我希望它看起来更像 Railsy 而不像 SQL。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-08-24
    • 1970-01-01
    • 2020-08-03
    • 1970-01-01
    • 2010-11-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多