From 08855064cd1b98cf0c00f902de89a94d0564c459 Mon Sep 17 00:00:00 2001 From: Mauro George Date: Sun, 1 Jun 2014 10:58:24 -0300 Subject: Add Total of grouped items to AR query interface on guides [ci skip] --- guides/source/active_record_querying.md | 34 +++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/guides/source/active_record_querying.md b/guides/source/active_record_querying.md index ee8cf4ade6..b2d71d4be8 100644 --- a/guides/source/active_record_querying.md +++ b/guides/source/active_record_querying.md @@ -659,6 +659,40 @@ FROM orders GROUP BY date(created_at) ``` +### Total of grouped items + +To get the total of grouped items on a single query call `count` after the `group`. + +```ruby +Order.group(:status).count +# => { 'awaiting_approval' => 7, 'paid' => 12 } +``` + +The SQL that would be executed would be something like this: + +```sql +SELECT COUNT (*) AS count_all, status AS status +FROM "orders" +GROUP BY status +``` + +It is possible to do this count with multiple values, to do this only add the +other column to `group`. + +```ruby +Order.group(:status, :delivery_method).count +# => { ['awaiting_approval', 'regular'] => 5, ['awaiting_approval', 'fast'] => 2, ['paid', 'regular'] => 2, ['paid', 'fast'] => 10 } +``` + +The SQL that would be executed would be something like this: + +```sql +SELECT COUNT (*) AS count_all, status AS status, +delivery_method AS delivery_method +FROM "orders" +GROUP BY status, delivery_method +``` + Having ------ -- cgit v1.2.3