Я могу найти общее количество клиентов по крайней мере с 5 заказами, использующими SQL COUNT с подзапросом:
SELECT COUNT(*) FROM (
SELECT c.id FROM customers as c
INNER JOIN orders as o ON c.id = o.customer_id
GROUP BY c.id
HAVING COUNT(o.id) >= 5
) as temp
Однако я хотел бы знать, как добиться того же, используя активную запись RailsИнтерфейс запроса, если это возможно.
У меня есть код:
total_count = Customer.joins("INNER JOIN orders ON customers.id = orders.customer_id").group("customers.id").having("COUNT(orders.id) >= 5").count
Но это приводит к хэш-карте идентификатора клиента и количества заказов, потому что генерируемый SQL выглядит как:
SELECT COUNT(*) AS count_all, customers.id AS customers_id FROM `customers` INNER JOIN orders ON customers.id = orders.customer_id GROUP BY customers.id HAVING COUNT(orders.id) >= 5
Есть ли другой способ достичь того, к чему я стремлюсь, используя соглашения Rails?Или мне просто создать необработанный запрос?