0

groupdate日付/時刻でレコードをグループ化するために gem を使用しています。レコードをグループ化し、having 句でユーザーを選択してから、日付/月/時刻でレコードをグループ化します。しかし、私が望む適切な結果が得られません。例えば:

User.group_by_month(:created_at).count # gives proper result but
User.joins("LEFT JOIN devices ON devices.user_id=users.id").group("users.id").having("COUNT(devices.id)=0").count #gives all users in hash while i want only count for the months.

chartkickこれは、 gemを使用してチャートを表示するために使用しています。

どんな助けでも大歓迎です。

4

1 に答える 1

0

最後に、2つのクエリを使用して回避策を得ました。

user_ids = User.joins("LEFT JOIN devices ON users.id=devices.user_id").group("users.id").having("count(devices.id)=0").pluck("users.id")

User.where(id: user_ids).group_by_month("created_at").count

もう 1 つの方法は、最初のクエリをサブクエリに含めることでした。

User.where("id IN (SELECT u.id FROM users u LEFT JOIN devices ON u.id=devices.user_id GROUP BY us.id HAVING count(devices.id)=0)").group_by_month("created_at").count
于 2015-02-06T06:42:20.250 に答える